GASの通知Botメンバーリストをスプレッドシート化する
Discord/Slack等への定期通知GASでハードコードされた宛先リストをスプレッドシート読込に置き換え、以後はコード編集不要にする。Drive全文検索がGAS編集直後は反映されない落とし穴も併記。
約6,500トークンの節約 (API料金換算で約10円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「GASの通知Botメンバーリストをスプレッドシート化する」は、Google WorkspaceカテゴリのAI指示書(MDファイル)です。Discord/Slack等への定期通知GASでハードコードされた宛先リストをスプレッドシート読込に置き換え、以後はコード編集不要にする。Drive全文検索がGAS編集直後は反映されない落とし穴も併記。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約6,500トークン(API料金換算で約10円)・72%のトークンを節約できます。
- カテゴリ
- Google Workspace
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約9,000トークン
- この巻物使用時
- 約2,500トークン
- 節約量
- 約6,500トークン (約10円)
- 更新日
- 2026-09-24
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/gas-bot/raw を読み込んで、この指示書どおりに実装して"
中身
Google Apps Script の通知Botメンバーリストを「コード編集不要」にする
課題
Slack/Discord/LINE 等へ定期通知を送る Google Apps Script(時間主導型トリガーで動く Bot)で、
通知対象者(メールアドレス、チャットID等)が const MEMBERS = [...] のようにコード内にハードコードされているケース。
人の入社・退職のたびに Apps Script エディタを開いてコードを書き換える必要があり、担当者以外は触れない・ミスが起きやすい。
解決パターン: メンバー情報をスプレッドシート化し、実行時に毎回読み込む
-
専用の小さなスプレッドシートを1枚作る(既存の社員名簿などの巨大な共有台帳には相乗りしない)。 1行目をヘッダーにし、必要な列だけを持たせる(例:
名前 / メールアドレス / チャットID)。 通知ロジックが必要とする最小限の列だけに絞るのがコツ(社員名簿全体を流用すると無関係な変更で壊れる)。 -
コード側のハードコード配列を、実行時にシートを読む関数に置き換える。
const MEMBERS_SHEET_ID = "<スプレッドシートID>"; function loadMembers_() { try { // タブ名は変更されうるので getSheetByName ではなく getSheets()[0] で「1枚目」を掴む const sheet = SpreadsheetApp.openById(MEMBERS_SHEET_ID).getSheets()[0]; const rows = sheet.getDataRange().getValues(); const members = []; for (let i = 1; i < rows.length; i++) { // 1行目(ヘッダー)はスキップ const name = String(rows[i][0] || "").trim(); const contact = String(rows[i][1] || "").trim(); if (!name || !contact) continue; members.push({ name, contact }); } return members; } catch (e) { Logger.log("Failed to load members from sheet: " + e.toString()); return []; // 失敗時は空配列を返し、通知処理全体をクラッシュさせない } }各トリガー関数の冒頭で
const members = loadMembers_();を呼び、以降ハードコード配列の代わりに使う。 -
以後の増減はスプレッドシートの行を足す・消すだけ。コードは二度と触らなくてよい。 Sheets APIやDrive経由で行を書き換えられるAIエージェント運用であれば、人がスプレッドシートを直接編集する必要すらなく、 「〇〇さんが辞めたので外して」という自然文の指示だけで増減が反映できる。
落とし穴: Google Drive の全文検索は Apps Script の中身に対して更新が非常に遅い
Apps Script(.gs)のコードを編集・保存した直後に、Drive の fullText contains '...' 検索で
「変更後の文字列がヒットするか」を検証しようとしても、保存直後には反映されない。
modifiedTime(更新日時のメタデータ)は保存の瞬間に更新されるのに、全文検索インデックス側は
数世代前(時には編集前)の内容を保持したままで、数分待っても変化しないことがある。
これは Docs/Sheets のような一次ファイル種別と異なり、Apps Script のソースコード本文が 低頻度でしかインデックスされないためと考えられる。
対策:
- 編集直後の検証根拠にDrive全文検索を使わない
- 信頼できる根拠は (1)
modifiedTimeが編集直後の時刻に更新されていること(保存の事実は確認できる)、 (2) 貼り替え前にコード全文を目視レビュー・構文チェック(node --check等)しておくこと、 (3) 可能なら対象関数を実際に一度実行してもらい、ログや実際の通知(Discord投稿等)という副作用で確認すること - 「全文検索でヒットしない=失敗」と早合点しない
補足: Apps Script の自動デプロイが使えない環境での運用
clasp push によるコード同期がOAuthポリシー等でブロックされている環境では、コード変更のたびに
人が Apps Script エディタを開いてファイル全体を貼り替える必要がある。この構成では上記パターンを一度
導入してしまえば、「コードを貼り替える手作業」は最初の1回だけで終わり、以降の運用(メンバー増減)は
スプレッドシート編集だけで完結する。「コードの自動デプロイができない」制約下でも、
「設定値の変更頻度が高い部分だけを外部化する」ことで運用の手間を最小化できる、という考え方は
GASに限らず他の自動化スクリプト全般に応用できる。
よくある質問
+「GASの通知Botメンバーリストをスプレッドシート化する」とは何ですか?
Discord/Slack等への定期通知GASでハードコードされた宛先リストをスプレッドシート読込に置き換え、以後はコード編集不要にする。Drive全文検索がGAS編集直後は反映されない落とし穴も併記。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約9,000トークンかかりますが、この巻物を使えば約2,500トークンで済みます。差し引き約6,500トークン(API料金換算で約10円)・72%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
GAS完全自動化テンプレ — Driveコマンドキュー方式
Google Apps Script の「毎回エディタで▶実行」を根絶。Drive 経由のコマンドキューで、初回1クリック以降は AI がすべての GAS 関数をリモート実行できるようになるテンプレート指示書。
人間の手入力台帳を壊さずに自動更新する — GAS Web App upsert 設計
各PC/各拠点の点検結果を、人間が手運用しているスプレッドシート台帳へ自動反映する。手入力列とコメントを絶対に壊さない突合設計、タブ/列の解決、並行POST対策、配布シークレットの落とし穴まで。
数式まみれの業務スプレッドシートを、Webアプリから壊さずに編集させる型
ArrayFormula と per-row 数式が混在する台帳を、セル単位 allowlist・dry-run 既定・適用前バックアップ・触っていないセルの数式不変検査で安全に書き換える設計手順。列ごとの数式復元と、テストが緑のまま壊れる典型例つき。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア