はじめに
先日インターン先でこういった依頼がありました。
「アポ管理をしているスプレッドシートで期日の2日前なってもアポ担当者が未記入の時に、slackを飛ばすコードを書いて欲しい」
普段はpythonしか書かないのでjavascript初挑戦でしたが、ChatGPTに聞きながらコードを書いていきました!
必要なもの
- 通知を飛ばすSlackのWebhook URL (取得する参考記事)
- 使うスプレッドシート
やっていきます!
スプレッドシート画面の「拡張機能」→「Apps Script]からコードを書く画面に飛びます。
ここでは
- A列に企業名
- B列にアポ担当者
- C列に "2023年2月6日月曜日"などのアポの日付
が記載されているとします。(ご自身のアポシートに合わせて変更してください)
以下コード例です!
function sendNotification() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var today = new Date();
var messages = [];
for (var i = 2; i <= lastRow; i++) {
var B_value = sheet.getRange("B" + i).getValue();
var C_value = sheet.getRange("C" + i).getValue();
if (B_value == "" && (new Date(C_value) - today) / (1000 * 60 * 60 * 24) <= 2) {
var A_value = sheet.getRange("A" + i).getValue();
var message = "A_value+"の担当が未設定です。記入をお願いします.";
messages.push(message);
}
}
if (messages.length > 0) {
var slackUrl = "通知を飛ばしたいslackのurl"
var payload = {
"text": messages.join("\n\n")
};
var options = {
"method": "post",
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(slackUrl, options);
}
}
以上を画面に貼り付けて保存します。
毎日勝手に実行するようにする
「トリガー」→「トリガーの作成」からトリガーの追加をします
以下のように設定します
- 「実行する関数を選択」→「sendNotification」
- 「イベントのソースを選択」→「時間主導型」
- 「時間ベースのトリガーのタイプを選択」→「日付ベースのタイマー」
- 「時刻を選択」→自分は「午前9時〜10時」
これで毎日9〜10時にプログラムが実行されます!
試しにエディタで実行を押して通知が飛ぶか試してみてください!