LoginSignup
7
3

More than 1 year has passed since last update.

【業務効率化】GASを使ってスプレットシートとSlack連携して、自動通知機能を作ってみた

Last updated at Posted at 2023-04-30

こんな人に向けて書いています

Slackでの報告がいっぱい上がっているけど、メンションをつけても、記入シートを使ってもなかなか完全に抜け漏れを防げきれず、タスク管理に悩んでいる方

何の問題が起きた?

原因: 5、6人で回す週に一回HPにアップデートする案件があります。

行う作業:

収録
文字起こし
動画編集
校正校閲
動画アップロード
サムネイル作成 (ブログ&YouTube)
YouTubeセッティング(タイトル、概要欄、終了画面、カード、おすすめ動画など....)
など...

一つ一つの作業としてはハードではないのですが、ワークフローがあるので、
前の人が終わらないと進まない作業もあります。
そのため、スプレットシートで管理表を作って、
終わったらチェックを入れるタスクを一個足した。

今までの流れ:
シート記入→Slackで報告

問題:

  1. チェックリストの記入漏れ
  2. Slackの情報が確認できてない
  3. 次の人がタスクに進まず、毎回納期ギリギリになって一気に動き出してチーム全体の負担になっている

解決案

問題2: Slackの情報が確認できてないがなぜ発生したかを考えてみた。
ヒアリングしたところ、
・ メンションされてないから見ない
・ スレッドが長くなると確認しづらい

そういう問題に解決策:

スプレットシートにチェックした時点で、何をチェックされたの自動的にSlackに通知がこれば解決。
アプリから来るので、細々な連絡を減らす

目指すゴール

・連絡漏れがなくなる
・「〇〇さん、〇〇が終わりました、ご確認お願いします」←これを打つ時間をなくす
・シートを開いて、チェックされてるかどうかの確認をある程度省ける

行ったこと

Googleスプレットシートのチェックボックスをトリガーにして、
クリックしたら、自動的に通知が来るように!!

手順

① スプレットシートのApps Scriptで下記のコード作成

// Slack Webhook URL
const SLACK_WEBHOOK_URL = 'YOUR_SLACK_WEBHOOK_URL';

// Spreadsheetのチェックボックスがチェックされたら実行
function onEdit(e) {
  onCheckboxChecked(e);
}

//チェックボックスの有効範囲を設定 (全部!!)
function onCheckboxChecked(e) {
  const range = e.range; 
  const sheet = range.getSheet();
  const row = range.getRow();
  const column = range.getColumn();
  const value = e.value; 

  // チェックボックスがチェックされたら
  if (value === 'TRUE') {
    const taskName = sheet.getRange(2, column).getValue(); //チェックした行の該当欄
    const customerName = sheet.getRange(row, 1).getValue(); //チェックした欄の該当行
    sendToSlack(taskName, customerName);
  }
}

// Slackに通知を送る
function sendToSlack(taskName,customerName) {
  const payload = {
    text: `${customerName}「${taskName}」が完了しました。` //通知内容
  };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}

// インストール可能なトリガーを作成 (=Apps Scriptで実行する部分)
function createInstalledTrigger() {
  ScriptApp.newTrigger('onCheckboxChecked')
    .forSpreadsheet(SpreadsheetApp.getActive())
    .onEdit()
    .create();
}

webhookの取得はこちらの記事を参考しました。

②Incoming Webhooksの設定

公式のapp directoryからIncoming webhooksを作成します。

実装したいグループの該当チャンネルを選ぶ。
スクリーンショット 2023-04-30 17.45.42.png

Customize nameとCustomize iconでAppの名前をアイコンを自由に設定できる。
スクリーンショット 2023-04-30 17.47.58.png

③ Apps Scriptを実行し、トリガーが実装されてるの確認

on Editで実行します。
スクリーンショット 2023-04-30 17.38.28.png

トリガーで確認:エラーもなく、実装できそうなら、OK
スクリーンショット 2023-04-30 17.40.14.png

お客様の名前を入力して、テスト

スクリーンショット 2023-04-30 17.33.40.png

チェックボックスにチェックを入れて、slackに反映できたら、完成!!
スクリーンショット 2023-04-30 17.31.12.png

結果

まだテスト中ですが、管理者の私は楽になりました。
チェックして、一つずつ確認、催促する手間を減らせて、自動的にタスクを完成したことがわかるようになり、チームのネガティブなコミュニケーションを少し減らせた気がします。

技術として複雑ではないのですが、かなり手間を省けるので、ぜひ試してみてください。

7
3
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
7
3