こんにちは、スタテク開発部の本田です。

突然ですが、タスクの締切管理って面倒ですよね、、、

締切日に間に合わせることが必須のタスクであれば、リマインドしながら管理したいものです。

そこで今日はスプレッドシードで管理しているデータが締切になったら、Google Apps ScriptでSlackにリマインド通知を送ってみようと思います!

Google Apps ScriptでSlackにリマインド通知を送ってみよう

スプレッドシードの作成

タスク管理をするスプレッドシードを作成します。

今回はシンプルに

  • タスク名(A列)
  • 担当者(B列)
  • 締切日(C列)
  • ステータス(D列)

が管理できるスプレッドシードを作成しました。

Google Apps Scriptの作成

Google Apps Scriptを作成します。

スプレッドシードのツール→スクリプトエディタで起動することができます。

ここからGoogle Apps Scriptを書いていきます。

今回はタスクの中で

  • 今日が締切
  • ステータスが完了以外

のタスクをSlack通知の対象としようと思います!

以下コード

function taskRemind() {
  // シート取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1')

  // ループ数定義 
  var firstRow = 2
  var lastRow = sheet.getLastRow()

  // アラート対象日フォーマット
  var date = new Date()
  var remindDate = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd')

  for(var i = firstRow; i <= lastRow; i++) {
    // 各項目取得
    var title = sheet.getRange('A' + i).getValue()
    var contactPerson = sheet.getRange('B' + i).getValue()
    var closingDay = sheet.getRange('C' + i).getValue()
    var formatClosingDay = Utilities.formatDate(closingDay, 'JST', 'yyyy/MM/dd')
    var status = sheet.getRange('D' + i).getValue()

    // リマインド時
    if (formatClosingDay === remindDate && status !== '完了') {
      var postUrl = '--Slack Webhook URL--'
      var message = `【リマインダー】今日が納期です!\n■依頼タイトル:${title}\n■担当者:${contactPerson}\n■納期:${formatClosingDay}`
      var payload = JSON.stringify({ "text" : message })
      var options = { method: 'post', contentType: 'application/json', payload: payload }

      UrlFetchApp.fetch(postUrl, options)
    } 
  }
}

Slack Incoming Webhookの作成

最後にSlackのWebhookを設定していきます。

以下URLにアクセスして設定していきます。

https://slack.com/services/new/incoming-webhook

通知対象のチャンネル名を選択し、Incoming Webhookインテグレーションを追加します。

インテグレーションの設定をお好みで編集して設定を保存すれば完了です!

設定した内容で動くか確認してみます!

スプレッドシードの内容をリマインドすることができました!

さいごに

今回はGoogle Apps Scriptを使ってSlackにリマインド通知を送ってみました。

これでリマインド作業の自動化ができて、他の作業に集中することができそうです。

今後もローコードを使用して作業を自動化していきたいと思います。

それではまた!