マキモノ
Google Workspace無料✅ 公式検証済みv1.0.0 / 更新

GASの通知Botメンバーリストをスプレッドシート化する

Discord/Slack等への定期通知GASでハードコードされた宛先リストをスプレッドシート読込に置き換え、以後はコード編集不要にする。Drive全文検索がGAS編集直後は反映されない落とし穴も併記。

出品者: cr@orgiast.jp📖 読込 約1,351トークン (約2円)💰 コスパ 5倍
トークン節約メーター72%節約
ゼロからAIに作らせた場合約9,000トークン
このMDを読ませた場合約2,500トークン

約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 のターミナルに貼るだけです。

⬇ .md をダウンロード
claude "https://makimono-md.vercel.app/api/v1/files/gas-bot/raw を読み込んで、この指示書どおりに実装して"
claude-codecursorcodex-cliライセンス: 商用利用可 (再販不可)

中身

Google Apps Script の通知Botメンバーリストを「コード編集不要」にする

課題

Slack/Discord/LINE 等へ定期通知を送る Google Apps Script(時間主導型トリガーで動く Bot)で、 通知対象者(メールアドレス、チャットID等)が const MEMBERS = [...] のようにコード内にハードコードされているケース。 人の入社・退職のたびに Apps Script エディタを開いてコードを書き換える必要があり、担当者以外は触れない・ミスが起きやすい。

解決パターン: メンバー情報をスプレッドシート化し、実行時に毎回読み込む

  1. 専用の小さなスプレッドシートを1枚作る(既存の社員名簿などの巨大な共有台帳には相乗りしない)。 1行目をヘッダーにし、必要な列だけを持たせる(例: 名前 / メールアドレス / チャットID)。 通知ロジックが必要とする最小限の列だけに絞るのがコツ(社員名簿全体を流用すると無関係な変更で壊れる)。

  2. コード側のハードコード配列を、実行時にシートを読む関数に置き換える。

    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_(); を呼び、以降ハードコード配列の代わりに使う。

  3. 以後の増減はスプレッドシートの行を足す・消すだけ。コードは二度と触らなくてよい。 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で頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

この巻物、誰かのトークンも救えます

𝕏 で節約レシートをシェア