【自動化】誰でも簡単!ChatGPTにGASを書いてもらおう。スプシ更新をSlackに通知する。
ChatGPTに協力してもらってGASを書いてみましょう。
今回は、「スプレッドシートが更新されたらその内容をSlackに通知する」というGASを書きます。
1. GASコードを生成
ChatGPTを開き、次のようなプロンプトをChatGPTに送信します。
スプレッドシートの行が更新されたらSlackに通知するGASを書いてください。ただし回答, 対応結果, 備考欄が更新された際は通知する必要はありません。スプレッドシートの列構成は | # | 内容 | リンク等 | 記入日 | 記入者 | 回答 | 対応結果 | 備考 | となっています。Slackの通知には番号, 内容, 記入者 を含めてください。通知文に元のスプレッドシートの導線を記載するようにしてください。 "シートを見る"というテキストにURLを貼るようにしてください。ヘッダー行の更新と番号の更新も通知しないようにしてください。
すると、次のようなコードが返ってきました。
function onEdit(e) {
const sheet = e.source.getActiveSheet();
const range = e.range;
const row = range.getRow();
const col = range.getColumn();
// ヘッダー行 (1行目) と番号列 (1列目) 及び回答 (6列目), 対応結果 (7列目), 備考 (8列目) の列を無視
if (row === 1 || col === 1 || col === 6 || col === 7 || col === 8) {
return;
}
// 変更された行の情報を取得
const rowData = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
// スプレッドシートのURL
const sheetUrl = e.source.getUrl();
// Slackに送信するメッセージを作成
const message = `行が更新されました: \n番号: ${rowData[0]}\n内容: ${rowData[1]}\n記入者: ${rowData[4]}\n\n<${sheetUrl}|シートを見る>`;
// SlackのWebhook URL (適切なURLを設定してください)
const webhookUrl = "YOUR_SLACK_WEBHOOK_URL";
// Slackにメッセージを送信する関数を呼び出す
sendToSlack(message, webhookUrl);
}
// Slackにメッセージを送信する関数
function sendToSlack(message, webhookUrl) {
const payload = JSON.stringify({ text: message });
const options = {
method: 'post',
contentType: 'application/json',
payload: payload
};
UrlFetchApp.fetch(webhookUrl, options);
}
また、 上記スクリプトのYOUR_SLACK_WEBHOOK_URLの部分を、実際のSlack Webhook URLに置き換えてください。 という指示も一緒に教えてくれました。
2. SlackのWebhookを代入
ChatGPTが教えてくれた通り、SlackのWebhookを上記スクリプトに入れます。
まずSlack APIのYour Appsページを開きます。
SlackのYour Appsページ(非ログイン状態)
該当Slackワークスペースで使っているアカウントでログインし、 [Create New App] します。
Features > App Home > Your App's Presence in Slackでアプリ名を付けます(この名前がついていない場合、"このアプリはこのワークスペースにボットをインストールする許可を要求していますが、現在、ボットを使用するための設定がされていません。この問題を解決するためには開発者にお問い合わせください。" というエラーが出ます)。
アプリ名を付ける欄
次にFeatures > Incoming Webhooksで [Add New Webhook to Workspace] し、通知先とするChannelを選択します。
するとWebhookが出来上がりです。あとはこれをコピーして、上記スクリプトに貼り付けます。
出来上がったWebhook
3. GASに転記
該当のスプレッドシートにて、拡張機能 > Apps Scriptを選択します。
あとはコード欄に先程のスクリプトをコピー&ペースト。
トリガー欄(タブの上から4つ目の時計アイコン)にも設定を行うようChatGPTから指示があることがあるので、それにも従います。
トリガーについてのChatGPTからの指示
テスト
スプレッドシートを更新してみましょう。今回のプロンプトでは番号, 内容, 記入者, シートへのURLを出力するようにしていました。
実際のSlack通知(テスト結果)
ちゃんと表示されていました。
無事に通知を自動化することが出来ましたので、これで完成です
感想
実際には1回のプロンプトで完成できたわけではなく、テストする, 改良をオーダーするなどの作業を行い、20分程度で望ましい通知を実現することができました。
自分はコードは全く書けません。GASも自分にとっては、知ってるけれど検索してコピペできるコードが転がっていたら使う という程度でした。大抵はZapierなどワークフローツールで知識不足を補っていましたが、それもコストがかかるので限界があります。
しかし今では、ChatGPTの協力で数分でコードを書くことができ、テストしては改良をオーダーを何度も反復して望ましいコードを得ることも出来るようになりました。しかも、Zapierのようなノーコードツールを使って実装するよりもずっと早く出来たことは驚きです。
Appendix
実際のやり取り(ChatGPT):https://chatgpt.com/share/874b87be-75ab-4265-9d4b-bf534a1b7e46
Discussion