はじめに
Google Apps ScriptとSlack Botをつかって、対象者に個別の連絡を一斉送信する方法について書きます。
私の仕事上(人事)、社員にやたらとリマインドや個別連絡をすることが多いため、楽にできる方法はないかと思い作ってみました。
GASが何であるか、GASでのスクリプトの書き方等は一旦触れずに記載します(あしからず)
手順1/2. Slackのincoming webhooksのアドレスを取得
まずはbotのアカウントを取得します。ここではSlackのincoming webhooksを使用します
この機能を使うには、まず送信先のエンドポイントをSlackで作成する必要があります。
Slackのアプリページから incoming-webhooks を選択します。
下記画像にしたがってページを進めて、
下記ページの赤枠のリンクをコピーしておいてください。あとで使います。
手順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★★★と書いてある部分はそれぞれ適宜修正ください。
スクリプト
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」を実行。
いくつか説明をはしょってる部分ありますが、疑問あればいつでもご質問ください。