概要
![Wantedly(ウォンテッドリー)はたらくを面白くするビジネスSNS.png](https://qiita-image-store.s3.amazonaws.com/0/121942/420bf597-ec1d-7cf6-dd67-989eeef3f4e1.png)
https://www.wantedly.com/companies/zyyx/post_articles/119174
↑の記事で紹介した内容の詳細です。
![Wantedly_feedネタリスト_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/3fb23c97-78ea-fcc1-df02-77e185fc897c.png)
![Slack_-_ZYYX2.png](https://qiita-image-store.s3.amazonaws.com/0/121942/f4c7df24-0e21-d6a0-06b2-a85914a13603.png)
手順
STEP1 Slack管理画面より《Incoming WebHooks》を登録
https://{対象ドメイン}.slack.com/apps/manage/custom-integrations
にアクセスします。
![Configure_Apps___ZYYX_Slack.png](https://qiita-image-store.s3.amazonaws.com/0/121942/7571c1d8-e583-a30b-4b00-1df0b970c3b2.png)
![Incoming_WebHooks2___Slack_App_Directory.png](https://qiita-image-store.s3.amazonaws.com/0/121942/b5f3cff8-5645-9b2a-4bfb-d378227413a6.png)
![Incoming_WebHooks___ZYYX_Slack.png](https://qiita-image-store.s3.amazonaws.com/0/121942/ce4f25e4-1893-8bbc-b8ad-b1c9cd3379ac.png)
![Incoming_WebHooks___Slack_App_Directory.png](https://qiita-image-store.s3.amazonaws.com/0/121942/40669d38-ec66-70f9-e2ce-bb81b440a4b8.png)
![Incoming_WebHooks3___Slack_App_Directory.png](https://qiita-image-store.s3.amazonaws.com/0/121942/944dee85-1f14-1239-7e38-a769322769c2.png)
《Incoming WebHooks》の登録完了!
補足
2018/06/08時点で外部サービスからSlackを連携する方法は以下の4つ存在します。
- 《API》
- 《Incoming WebHooks》
- 《Outgoing WebHooks》
- 《Bot》
内、Slackにメッセージ投稿する方法は《API》,《Incoming Webhooks》,《Bot》の3つです。
今回は安全面も考慮して、特定のチャンネルにしか投稿できない《Incoming Webhooks》を選択しました。
STEP2 《GAS》にリマインドするロジックを登録
![Wantedly_feedネタリスト2_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/23b8116e-f8b9-2fab-c45f-5bd0a29f5807.png)
![Wantedly_feedネタリスト3_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/bb3b716c-f3fa-f572-6048-20762d709633.png)
サンプルコード
// リマインドのメイン処理
function remind() {
var sheet = SpreadsheetApp.getActive().getSheetByName('記事一覧');
var data = sheet.getDataRange().getValues(); // 処理効率上「記事一覧」シートの値を一括取得
// 公開日の列番号
var publishedAtColumunIndex = 0;
// 担当者の列番号
var assigneeColumunIndex = 1;
// 現在日
var currentDate = new Date();
for (var i = 1; i < data.length; i++) {
// 公開日
var publishedAt = new Date(data[i][publishedAtColumunIndex]);
// 担当者
var assignee = data[i][assigneeColumunIndex];
// 下書き開始リマインド日 = 公開1週間前
var writingRemindDay = new Date(publishedAt.getYear(), publishedAt.getMonth(), publishedAt.getDate() - 7);
// 下書きチェックリマインド日 = 公開3日前
var checkingRemindDay = new Date(publishedAt.getYear(), publishedAt.getMonth(), publishedAt.getDate() - 3);
// リマインド日の判定
if (isSameDate(currentDate, writingRemindDay)) {
post2Slack(assignee + ' Wantedly記事公開まで1週間です。下書きを初めていますか?');
} else if (isSameDate(currentDate, checkingRemindDay)) {
post2Slack(assignee + ' Wantedly記事公開まであと3日です。下書きは順調ですか?');
} else if (isSameDate(currentDate, publishedAt)) {
post2Slack(assignee + ' Wantedly記事公開日です。時間になったら公開をお願いします!');
}
}
}
// 同じ日付かどうか
function isSameDate(date1, date2) {
return date1.getYear() === date2.getYear()
&& date1.getMonth() === date2.getMonth()
&& date1.getDate() === date2.getDate();
}
// Slackにメッセージ投稿
function post2Slack(message) {
// "#対象チャンネル" -> 《Incoimg WebHooks》で指定したチャンネルに変更
var jsonData =
{
"channel" : "#対象チャンネル",
"text" : message,
"link_names": true
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
// 'https://hooks.slack.com/...' -> 《Incoimg WebHooks》を登録した際の Webhook URL
UrlFetchApp.fetch('https://hooks.slack.com/...', options);
}
![Wantedly_feedネタリスト4_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/9dd79227-2417-7d93-ee50-196c23f712e8.png)
《GAS》の登録完了!
STEP3 動作確認
※サンプルコードの場合、スプレッドシートのA列の日付を確認して、
1週間前/3日前/当日の3パターンのどれかに一致するとリマインドする仕組みです。
動作確認用に適宜A列の日付を変更して下さい。
![Wantedly_feedネタリスト5_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/fd86c254-e6ee-2c9b-3944-2ddd2b51a665.png)
![Wantedly_feedネタリスト6_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/65e63f79-bc19-34d9-b9ec-3d6e09c3ea79.png)
![Slack_-_ZYYX2.png](https://qiita-image-store.s3.amazonaws.com/0/121942/a345b097-c987-ce26-bd70-9cb0051ca133.png)
![Slack_-_ZYYX.png](https://qiita-image-store.s3.amazonaws.com/0/121942/8a3c5747-db2e-2ff1-9f0b-24209801783e.png)
Slackにメッセージ投稿できていれば、動作確認完了!
STEP4 《GAS》にトリガーを登録する
![Wantedly_feedネタリスト7_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/df990eb2-60ba-7859-83e8-9eb7c6b95999.png)
![Wantedly_feedネタリスト8_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/03244a03-0581-7f00-6670-4235f9f52720.png)
![Wantedly_feedネタリスト9_-_Google_スプレッドシート.png](https://qiita-image-store.s3.amazonaws.com/0/121942/acafacf7-b136-5244-92fd-80c58154295d.png)
トリガーの登録も完了!
:blush: :two_hearts: :robot:
これでスプレッドの日付をもとに、自動でリマインドしてくれるようになります!
Botで無駄な仕事無くしたい(切実)