0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GAS】スプレッドシートとSlackの同期

Last updated at Posted at 2023-02-24

はじめに

先日インターン先でこういった依頼がありました。
「アポ管理をしているスプレッドシートで期日の2日前なってもアポ担当者が未記入の時に、slackを飛ばすコードを書いて欲しい」

普段はpythonしか書かないのでjavascript初挑戦でしたが、ChatGPTに聞きながらコードを書いていきました!

必要なもの

やっていきます!

スプレッドシート画面の「拡張機能」→「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時にプログラムが実行されます!

試しにエディタで実行を押して通知が飛ぶか試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?