プログラミング未経験でもできる!Googleサービス自動化の第一歩
SECTION 08
チャットAIは便利ですが、基本的に「1対1」の対話です。100件のメールを要約したい、500行のデータを分類したい...それを1件ずつコピペしますか?
GASを使えば「1対1,000」の自動処理が可能に。スプレッドシートがUIになり、ボタン一つで大量データを一括処理できます。
AIをチャットから「業務の仕組み」に変える。
それがGASの役割です。
SECTION 08
世界で最も使われているプログラミング言語がベース。学習リソースが豊富です。
インストール不要。Chromeさえあれば、すぐに開発・実行できます。
Google Workspaceユーザーなら追加料金なし。サーバーもGoogleが提供します。
Google Apps Script は、Googleが提供するクラウド上のスクリプト実行環境です。スプレッドシート、Gmail、ドライブなどのGoogleサービスを、プログラムから直接操作できます。
SECTION 08
シートのデータをもとに、個別メールを一括送信。宛名・内容も自動差し替え。
データの読み書き、集計、フィルタリング。手作業の集計を自動化。
フォルダ作成、ファイル移動、共有設定の自動化。大量ファイルの整理に。
Gemini API、Slack、Chatworkなど外部サービスとの連携が可能。
予定の自動登録、リマインダー送信。会議室予約の自動化も。
フォーム回答の自動処理。集計・通知・承認フローを自動構築。
SECTION 08
| 比較項目 | GAS | Zapier | Power Automate | Python |
|---|---|---|---|---|
| 費用 | 無料 | 月$19.99〜 | 月$15〜 | 無料(環境構築要) |
| 学習コスト | 低〜中 | 低(GUI操作) | 低(GUI操作) | 高 |
| Google連携 | ネイティブ対応 | API経由 | コネクタ経由 | API経由 |
| カスタマイズ性 | 高い | 中程度 | 中程度 | 非常に高い |
| 環境構築 | 不要 | 不要 | 不要 | 必要 |
| おすすめ | Google Workspace ユーザーに最適 | 多サービス連携 | Microsoft 365環境 | 高度な処理 |
SECTION 08
Google スプレッドシートを新規作成、または既存のファイルを開きます。
上部メニューバーの「拡張機能」をクリックします。
ドロップダウンから「Apps Script」を選択すると、新しいタブでエディタが開きます。
SECTION 08
プロジェクトのファイル一覧。.gsファイルやHTML ファイルを管理します。
スクリプトを書く場所。構文ハイライトと自動補完が使えます。
Logger.log() の出力やエラーメッセージが表示されます。
Webアプリやアドオンとして公開するときに使います。
SECTION 08
エディタに最初から表示されている myFunction を書き換えてみましょう。
「表示」→「ログ」で Logger.log の出力を確認できます。「Hello! GASの世界へようこそ!」と表示されれば成功です。
スプレッドシートに戻ると、ポップアップダイアログが表示されます。
初回実行時のポイント: 「このアプリは確認されていません」と表示されたら、「詳細」→「(安全でないページ)に移動」をクリックして承認してください。
SECTION 08
const、変更する値は let を使いましょう。var は古い書き方です。新しいコードでは let / const を使いましょう。GASの真骨頂 -- シートのデータをプログラムで自在に操る
SECTION 08
| メソッド | 説明 |
|---|---|
| getRange("A1") | セルA1を選択 |
| getValue() | セルの値を取得 |
| setValue(値) | セルに値を設定 |
| getRange(行, 列) | 行番号・列番号で指定 |
getRange("A1") と getRange(1, 1) は同じセルを指します。ループ処理では数値指定が便利です。SECTION 08
| A列 [0] | B列 [1] | C列 [2] | |
|---|---|---|---|
| 1行目 [0] | 名前 | 部署 | メール |
| 2行目 [1] | 田中 | 営業部 | tanaka@... |
| 3行目 [2] | 佐藤 | 開発部 | sato@... |
ポイント: getValues() は全データを一度に取得するので、1セルずつ getValue() を呼ぶより圧倒的に高速です。
data[0]、A列は [0] です。SECTION 08
getRange(行, 列, 行数, 列数) で範囲を指定します。setValues() に渡す配列のサイズと一致させてください。SECTION 08
| A: 名前 | B: 部署 | C: 点数 | D: ステータス | E: 結果 |
|---|---|---|---|---|
| 田中 | 営業部 | 85 | 完了 | 合格 |
| 佐藤 | 開発部 | 60 | 完了 | 再試験 |
| 鈴木 | 総務部 | 92 | 完了 | 合格 |
ポイント: 「ステータス列」を使うことで、途中でエラーが起きても再実行時に処理済みの行をスキップできます。大量データ処理の定番パターンです。
安全で使いやすいスクリプトに仕上げるための設定
SECTION 08
スプレッドシートのメニューバーに、独自のメニューを追加できます。非エンジニアでもボタン一つで処理を実行可能に。
onOpen は特別な関数名で、スプレッドシートを開くたびに自動で実行されます。メニューの登録に最適です。SECTION 08
「毎朝9時に実行」「1時間ごとに実行」など、スケジュール実行ができます。
Googleフォームに回答が送信されたら自動で処理を実行します。
セルが編集されたら自動で処理を実行。リアルタイム連動に便利です。
SECTION 08
左メニューの歯車アイコンをクリック
「スクリプトプロパティを追加」をクリック
プロパティ: GEMINI_API_KEY / 値: あなたのAPIキー
SECTION 08
GASは初回実行時に、スクリプトがアクセスするサービスへの権限を求めます。これはGoogleのセキュリティ機能です。
| 使うサービス | 要求される権限 |
|---|---|
| SpreadsheetApp | スプレッドシートの閲覧・編集 |
| GmailApp | メールの閲覧・送信 |
| DriveApp | Driveファイルの閲覧・編集 |
| UrlFetchApp | 外部URLへのアクセス |
| CalendarApp | カレンダーの閲覧・編集 |
実際に手を動かして体験しよう
SECTION 08
sheets.new にアクセスすると素早く作れます。
新しいタブでエディタが起動します。
確認ポイント: 実行後にスプレッドシートのA1セルに「GAS動作確認OK!」と表示されれば成功です。
SECTION 08
| A列 | B列 |
|---|---|
| りんご | 150 |
| バナナ | 100 |
| みかん | 80 |
上記のデータをA1:B3に手入力してください。
SECTION 08
onOpen は開いたときに実行されるため、リロードが必要です。
calcTaxPrice 関数をメニューから呼び出しています。関数を組み合わせることで機能を拡張できます。SECTION 08
関数: dailyReport / イベント: 時間主導型 / タイプ: 日付ベース / 時間: 午前9時〜10時
SECTION 08
原因: 存在しないセルや変数にアクセスしている
対策: 配列のインデックスが正しいか、データ範囲を確認する
原因: スクリプトの権限が未承認
対策: エディタから手動実行して認証画面を表示し、承認する
原因: 短時間にAPIを呼びすぎた
対策: Utilities.sleep(1000) で1秒待機を入れる
Logger.log(変数名) を使って、処理の途中で変数の中身を確認しましょう。問題の切り分けに役立ちます。SECTION 08
関数名は「何をするか」が分かる名前に。f1() → sendMonthlyReport()
「何をしているか」ではなく「なぜそうするか」を書きましょう。未来の自分への説明書です。
小さな機能を作る → テスト → 次の機能、の繰り返し。一度に全部作らないのがコツです。
getValue() をループで100回呼ぶより、getValues() で一括取得。10倍以上高速になります。
コードにパスワードやキーを直接書かない。必ずスクリプトプロパティに保管しましょう。
処理済み/未処理を管理する列を用意。途中でエラーが起きても安全に再実行できます。
SECTION 08
GASは「非エンジニアが最も簡単に始められる自動化ツール」です。次のセクションでは、ここにAI(Gemini API)の力を組み込みます。
お疲れさまでした!次はGASにAIの頭脳を組み込みます。