Google Apps Script 基礎
GASとは
Google Apps Script(GAS)はGoogleが提供するJavaScriptベースのスクリプト言語。スプレッドシート・Gmail・カレンダー・ドライブなどのGoogleサービスを自動化・連携できます。
スプレッドシート自動化
データの集計・転記・フォーマット変換を自動実行。毎朝9時に自動集計するなど
Gmail自動送信
条件に応じてメールを自動送信。フォーム送信時の自動返信メールなど
Googleフォーム連携
フォーム回答をスプレッドシートに自動記録・集計・通知
Webスクレイピング
URLFetchAppで外部サイトのデータを取得してスプレッドシートに記録
カレンダー自動登録
スプレッドシートの予定をGoogleカレンダーに一括登録
チャット通知
Slack・LINE・Teamsへのwebhook通知を自動送信
GASは完全無料・サーバー不要
GASはGoogleのサーバー上で実行されるため、自前のサーバーが不要。Googleアカウントがあれば無料で使える。1日あたりの実行時間は90分(無料プラン)。
スクリプトエディタの使い方
| 操作 | 手順 |
|---|---|
| スクリプトエディタを開く | スプレッドシートの「拡張機能」→「Apps Script」 |
| 関数を実行する | 関数名を選択して▶(実行)ボタンをクリック |
| ログを確認する | console.log() で出力 → 「表示」→「ログ」 |
| 保存する | Cmd+S(Mac)/ Ctrl+S(Win) |
// 最初のGASコード:ログ出力
function myFirstScript() {
console.log('Hello, GAS!');
SpreadsheetApp.getUi().alert('スクリプトが実行されました!');
}
スプレッドシートの操作
GASでスプレッドシートを操作するには SpreadsheetApp クラスを使います。getRange・getValue・setValue が基本の3メソッドです。
function spreadsheetBasics() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
// A1セルの値を取得
const value = sheet.getRange('A1').getValue();
console.log('A1の値: ' + value);
// B1セルに値を書き込む
sheet.getRange('B1').setValue('GASから書き込みました');
// A1:C5の範囲を2次元配列で取得
const data = sheet.getRange('A1:C5').getValues();
data.forEach(row => console.log(row));
}
| メソッド | 説明 |
|---|---|
getRange('A1') | A1セルを参照するRangeオブジェクトを返す |
getValue() | 単一セルの値を取得(文字列・数値・Date) |
setValue(value) | 単一セルに値を書き込む |
getValues() | 範囲の値を2次元配列で取得 |
setValues(array) | 範囲に2次元配列を一括書き込み |
getLastRow() | データが入力されている最終行番号を返す |
トリガーの設定とGmail自動送信
function sendDailyReport() {
const sheet = SpreadsheetApp.getActiveSheet();
const count = sheet.getLastRow() - 1; // ヘッダー行を除く
const body = `
本日のレポート
=============
登録件数: ${count} 件
集計日時: ${new Date().toLocaleString('ja-JP')}
`;
MailApp.sendEmail({
to: '[email protected]',
subject: '【自動送信】本日のレポート',
body: body
});
console.log('メール送信完了');
}
| 設定方法 | 手順 |
|---|---|
| エディタからの設定 | 左メニュー「トリガー」→「トリガーを追加」 |
| イベントのソース | 「時間主導型」を選択 |
| 時間の種類 | 毎日・毎時・毎週などから選択 |
| 時刻指定 | 例:「毎日 午前9時〜10時」に設定 |
メール送信は1日500通まで(無料プラン)
GASのMailApp.sendEmailは無料アカウントで1日500通の上限がある。大量メール送信にはGmail APIやSendGridなどの外部サービスとの連携を検討しよう。
- GASはJavaScriptベース。Googleサービスを無料・サーバーなしで自動化できる
- スクリプトエディタはスプレッドシートの「拡張機能」→「Apps Script」から起動
- getRange・getValue・setValueが基本の3メソッド
- getValuesで範囲を2次元配列として取得してforEachで処理できる
- MailApp.sendEmailでGmailから自動メールを送信できる
- トリガーで「毎日9時に実行」などの定期自動実行が設定できる
Power Automate Desktop 基礎
PADとは
Power Automate Desktop(PAD)はMicrosoftが提供するWindowsデスクトップ向けのRPA(ロボティック・プロセス・オートメーション)ツール。Windows 11では標準搭載されており、プログラムを書かずにGUI操作で自動化フローを作成できます。
| 比較項目 | GAS | PAD |
|---|---|---|
| 動作環境 | Googleサーバー上(クラウド) | Windowsデスクトップ(ローカル) |
| 操作対象 | Googleサービス(スプレッドシート・Gmail等) | デスクトップアプリ・ブラウザ・Excel等 |
| プログラミング | JavaScript記述が必要 | ノーコード・GUI操作で作成 |
| OS | ブラウザさえあればどのOSでも可 | Windows限定 |
| 費用 | 無料(Googleアカウントのみ) | Windows 11は無料。一部機能は有料 |
「Excelの手作業」こそPADの得意分野
毎日手動でExcelにコピペ・集計・ファイル名変更しているような作業がPADの最も得意な分野。Googleを使わない環境・Excelベースの業務自動化にはPADが有効。
フローの作成と基本アクション
| ステップ | 操作 |
|---|---|
| ① PADを起動 | スタートメニューから「Power Automate」を起動 |
| ② 新規フロー作成 | 「新しいフロー」をクリック→フロー名を入力 |
| ③ アクションを追加 | 左パネルからアクションをキャンバスにドラッグ |
| ④ アクションを設定 | アクションをダブルクリックしてパラメーターを設定 |
| ⑤ 実行・デバッグ | ▶(実行)またはステップ実行でフローを確認 |
Webブラウザーを起動
指定URLをChrome/Edge/Firefoxで開く。ブラウザオブジェクトを変数に格納する
Webページにテキストを入力
テキストボックス・検索フォームなどに文字を入力する
待機
ページ読み込み・要素の表示を待つ。秒数指定または要素の出現まで待機
Webスクレイピング
| ステップ | 操作内容 |
|---|---|
| ① ブラウザで対象ページを開く | 「Webブラウザーを起動」で対象URLを開いておく |
| ② アクションを配置 | 「ブラウザー自動化 → Webデータ抽出」を追加 |
| ③ データの選択 | ライブWebヘルパーで抽出したい要素をクリック |
| ④ 変数に格納 | 抽出されたデータが「DataTable変数」として格納される |
| ⑤ Excelに書き込む | 「Excelワークシートに書き込む」でDataTableを保存 |
スクレイピングは利用規約を必ず確認する
Webサイトによってはスクレイピングを禁止している場合がある。robots.txtや利用規約を確認し、許可されている範囲内で行うこと。特に商用利用や大量アクセスには注意が必要。
条件分岐・ループ・変数の活用
| アクション | 説明 |
|---|---|
If | 条件が真の場合に実行するブロックを定義 |
Else / Else if | Ifが偽の場合、または複数条件の分岐を追加 |
For each | リストやDataTableの各要素を繰り返し処理 |
| 変数を設定 | %FileName% のような変数を定義・参照 |
変数名は日本語でもOK
PADの変数名は日本語を使える(例:%顧客名%)。チームで共有するフローでは日本語変数名にすると読みやすくなる。ただし半角スペース・記号は使えない。
- PADはWindowsデスクトップのGUI操作を自動化するRPAツール。ノーコードで作成できる
- GASはクラウド・Googleサービス向け、PADはローカル・Windows・Excel向け
- フローはアクションをドラッグ&ドロップで並べるだけで作成できる
- 「Webページからデータを抽出」でWebスクレイピングが実現できる
- スクレイピング前は必ず対象サイトの利用規約とrobots.txtを確認する
- If・For each・変数を組み合わせることで複雑な自動化フローが作れる