A
AIとWeb技術で資産を最大化するA · I · M · A — Vol. 02 / 2026
2026年5月2日(土)
ENGINEERING · エンジニアリング

Google Apps Scriptで「毎週やっている作業」を消す:スプレッドシート自動化の実践パターン5選

GASはサーバーもランニングコストも不要で、Google Workspaceをそのままコードで操れる。エンジニアが知っておくべき自動化パターンを、実際に使っているコード付きで解説する。

あっつん
IT engineer × 中小企業診断士(学習中) · 2026.05.02 · 9 min read
Google Apps Scriptで「毎週やっている作業」を消す:スプレッドシート自動化の実践パターン5選

「毎週月曜日にスプレッドシートを集計してメールで送る」──そういう作業を手でやっているなら、それは自動化できる。しかもサーバー不要で、無料で、今すぐ。

Google Apps Script(GAS)はGoogleが提供するJavaScriptベースのスクリプト環境だ。Gmail・スプレッドシート・カレンダー・ドライブ・フォームをAPIではなくオブジェクトとして直接操作できる点が他のツールとまったく違う。AWS LambdaやCloudFunctionsを立てるまでもないルーティンなら、GASで完結する。

GASの基本:「どこで動くか」を理解する

GASは3つのトリガーで動く。

トリガー 説明
時間ベース 毎日8時、毎週月曜など
スプレッドシートイベント 編集時・フォーム送信時
手動実行 メニューからボタンで起動

スクリプトはスプレッドシートに紐付ける「コンテナバインド型」と、単独で動く「スタンドアロン型」がある。業務自動化は前者が多い。拡張機能 → Apps Script で開くだけで書き始められる。

パターン1:スプレッドシートの集計結果をメールで送る

最も基本的な自動化。毎週の売上サマリーや進捗レポートを、手動でコピペせず定時送信する。

function sendWeeklyReport() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("集計");
  const total = sheet.getRange("B2").getValue();
  const date  = Utilities.formatDate(new Date(), "Asia/Tokyo", "M月d日");

  GmailApp.sendEmail(
    "team@example.com",
    `【週次レポート】${date} 売上サマリー`,
    `今週の売上合計: ¥${total.toLocaleString()}\n\nシート: ${SpreadsheetApp.getActiveSpreadsheet().getUrl()}`
  );
}

トリガーを「毎週月曜 午前8時」に設定すれば、以後は完全無人化される。

パターン2:フォーム回答を自動でSlackに通知する

Googleフォームに回答が来たとき、SlackのIncoming Webhookに即時通知する。問い合わせ対応やアンケート収集の見逃し防止に効く。

function onFormSubmit(e) {
  const responses = e.values; // フォーム回答の配列
  const name    = responses[1];
  const message = responses[2];

  const webhookUrl = PropertiesService.getScriptProperties()
    .getProperty("SLACK_WEBHOOK_URL"); // シークレットは Script Properties に保存

  const payload = JSON.stringify({
    text: `📬 新しい問い合わせ\n*名前:* ${name}\n*内容:* ${message}`,
  });

  UrlFetchApp.fetch(webhookUrl, {
    method: "post",
    contentType: "application/json",
    payload,
  });
}

APIキーをコードに直書きせず PropertiesService に保存するのは必須の作法だ。

パターン3:スプレッドシートをPDFに変換してドライブに保存する

請求書・報告書を定期的にPDF化してフォルダに保管する処理。エクセル管理から脱却するきっかけになる。

function exportToPdf() {
  const ss     = SpreadsheetApp.getActiveSpreadsheet();
  const fileId = ss.getId();
  const sheetId = ss.getSheetByName("請求書").getSheetId();

  const url = `https://docs.google.com/spreadsheets/d/${fileId}/export`
    + `?format=pdf&gid=${sheetId}&portrait=true&fitw=true`;

  const token = ScriptApp.getOAuthToken();
  const blob  = UrlFetchApp.fetch(url, {
    headers: { Authorization: `Bearer ${token}` },
  }).getBlob().setName(`請求書_${Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyyMM")}.pdf`);

  DriveApp.getFolderById("YOUR_FOLDER_ID").createFile(blob);
}

パターン4:特定セルが変更されたら承認フローを起動する

スプレッドシートが「簡易ワークフローツール」として機能する構成。ステータス列が「承認依頼」に変わったら担当者にメールを飛ばす。

function onEdit(e) {
  const range = e.range;
  if (range.getColumn() !== 5) return;      // E列だけ監視
  if (range.getValue() !== "承認依頼") return;

  const row      = range.getRow();
  const sheet    = e.source.getActiveSheet();
  const itemName = sheet.getRange(row, 2).getValue();
  const requester = sheet.getRange(row, 3).getValue();

  GmailApp.sendEmail(
    "approver@example.com",
    `【承認依頼】${itemName}`,
    `${requester} さんから承認依頼が届いています。\n内容: ${itemName}`
  );
}

onEdit はシンプルトリガーのため、インストーラブルトリガーと違いOAuth不要で動く。ただしGmailの送信はインストーラブルが必要なので注意。

パターン5:外部APIからデータを取得してスプレッドシートに書き込む

為替レートや株価など、外部APIのレスポンスを定期的にシートに追記する。UrlFetchApp さえあれば任意のREST APIを叩ける。

function fetchExchangeRate() {
  const res  = UrlFetchApp.fetch("https://api.exchangerate-api.com/v4/latest/USD");
  const data = JSON.parse(res.getContentText());
  const jpy  = data.rates.JPY;

  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("為替ログ");
  sheet.appendRow([new Date(), "USD/JPY", jpy]);
}

トリガーを1時間ごとに設定すれば、無料で簡易レートロガーの完成だ。

使うときの3つの注意点

1. 実行時間は最大6分 長い処理はチャンクに分けてトリガーを連鎖させる。

2. 1日のURL Fetch上限は20,000回 外部APIを叩く処理は回数を意識する。

3. onEdit と インストーラブルトリガーの違いを理解する Gmail送信・外部API呼び出しはインストーラブルが必要。シンプルトリガー(onEditonOpen)でできることは限られている。

まとめ

GASの強みはゼロコストで始められ、Google Workspaceをそのまま操れる点だ。複雑なインフラなしに「毎週やっている作業を消す」という目的に特化している。

まずパターン1のメール送信だけ動かしてみる。それだけで「自動化の感触」をつかめる。感触をつかんだら、あとは組み合わせていくだけだ。

#Google Apps Script#GAS#自動化#スプレッドシート#業務効率化