1
3

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 5 years have passed since last update.

【GAS】Slack botで対象者に対して一斉連絡 ※リマインド/個別連絡に使えるよ

Last updated at Posted at 2019-01-29

はじめに

Google Apps ScriptとSlack Botをつかって、対象者に個別の連絡を一斉送信する方法について書きます。
私の仕事上(人事)、社員にやたらとリマインドや個別連絡をすることが多いため、楽にできる方法はないかと思い作ってみました。

GASが何であるか、GASでのスクリプトの書き方等は一旦触れずに記載します(あしからず)

手順1/2. Slackのincoming webhooksのアドレスを取得

まずはbotのアカウントを取得します。ここではSlackのincoming webhooksを使用します

この機能を使うには、まず送信先のエンドポイントをSlackで作成する必要があります。
Slackのアプリページから incoming-webhooks を選択します。

下記画像にしたがってページを進めて、

スクリーンショット 2019-01-29 23.58.22.png
スクリーンショット 2019-01-29 23.58.27.png
スクリーンショット 2019-01-29 23.58.32.png

下記ページの赤枠のリンクをコピーしておいてください。あとで使います。
スクリーンショット 2019-01-29 23.58.37.png

手順2/2. Googleスプレッドシートとドキュメントを用意。スクリプトを書く

次に送信するためのスプレッドシートとスクリプトを用意します。
まずは下記サンプルにある通りスプレッドシートとドキュメントをコピーして自分のを作ってください

サンプルURL

スプレッドシート
https://docs.google.com/spreadsheets/d/1XBJX6Zi5G3p-MiDREbQR-Kmm3OXRJC7QLG7I0o5jEpo/edit?usp=sharing
配信ドキュメント
https://docs.google.com/document/d/11200kEtObjbn3fUQdH1Z5n7XN4jktDThMYy6r65gm-s/edit

次にスプレッドシートのスクリプトエディタを開き、下記をコピペください。
なお、// ★★★TODO★★★と書いてある部分はそれぞれ適宜修正ください。

スクリプト

qiita.js
var sheet = SpreadsheetApp.getActiveSheet();
var postUrl   = "xxxxxxxx"; // ★★★TODO★★★ 1.で取得したSlackのLinkを貼っつけてください

function postToSlack() {
  var values = sheet.getDataRange().getValues();

  // 文章を取得
  var text = DocumentApp.openById('xxxxx') // ★★★TODO★★★ 配信するドキュメントのIDを記載
  var letter = text.getText();

    // values.shift();
  for (var i = 3, l = values.length; i < l; i++) {

   // 差し込み情報
  var incertzero = values[i][1];
  var incertone  = values[i][2];
  var incerttwo  = values[i][3];

    var message = letter.replace(/{0}/g,incertzero).replace(/{1}/g,incertone).replace(/{2}/g,incerttwo);   
var username = values[i][0];

    sendHttpPost(message, username);
    sheet.getRange(i+1,5).setValue("Done");
  }
}
function sendHttpPost(message, username)
{
  var jsonData =
  {
     "channel" : username,
     "username" : 'xxxx', //★★★TODO★★★ Botのアカウント名称を記載(なんでも良いです)
     "text" : message
  };
  var payload = JSON.stringify(jsonData);
  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };
  UrlFetchApp.fetch(postUrl, options);
}

送信方法

ここまでできたらあとは送るだけです。
1.上記Googeドキュメントに送信したい文章を書きます。
2.スプレッドシートA列に送信したいSlackのアカウント(@xxxx)やSlackページ(#xxx)を記載ください。何行でも記載できます。
3.スクリプトエディタの「postToSlack」を実行。

以上で画像のように対象者にSlackを一斉送信できます。
スクリーンショット 2019-01-30 0.07.39.png

いくつか説明をはしょってる部分ありますが、疑問あればいつでもご質問ください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?