スプレッドシートのリストからランダムで選んでSlackに投稿する積ん読BOT
共有の積ん読リストから1冊ピックアップしてSlackに投げる、積ん読BOTを作る!
スプレッドシートにメモした積ん読リストの中から、週に一度、一冊ピックアップして情報を投げるアプリを作成しました。
Slackに投げることで、チーム内で感想を言い合うなどコミュニケーションの活性化も狙えます。
1. スプレッドシートを作る
今回は、下記のような構造のデータを作成しました。
1列目: タイトル
2列目: 著者
3列目: 概要
4列目: 読むポイント
5列目: AmazonのURL
※行: 三 、列: |||
2. SlackのIncoming Web hookでBOTを作成
Slack botを作成して、チャンネルに招待し、Web hook URLを控えてください。
やり方は、GoogleフォームとSlackとメールをGASで連携する【後編 フォームで入力された内容をIncoming Web Hookを使ってSlackで通知する】を参考にしてください。
3. GASを書く
function doPost() {
var sheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName('タブ名');
var data = sheet.getDataRange().getValues(); //スプレッドシートのオブジェクトからデータを配列で取得します。
var pickedNum = Math.floor(Math.random() * Math.floor(data.length));
var text = "*今週のおすすめ図書は「" +data[pickedNum][0] +'」!! *\n'+
"■著者: "+ data[pickedNum][1] + "\n" +
"■概要: \n"+ data[pickedNum][2] + "\n" +
"■読むポイント: \n"+ data[pickedNum][3] + "\n" +
"■Amazonリンク: \n"+ data[pickedNum][4] + "\n";
var options = {
method: 'post',
contentType: 'application/json',
payload: '{"text":"'+text+'"}'
};
UrlFetchApp.fetch("YOUR WEB HOOK URL", options);
}
変更する場所
- スプレッドシートのID: スプレッドシートのURLに含まれています。
https://docs.google.com/spreadsheets/d/【ここの数字とアルファベットの羅列がID】 /edit#gid=0
- タブ名: タブの名前を入れる
- YOUR WEB HOOK URL: 「2. SlackのIncoming Web hookでBOTを作成」で控えたURLを入れる
許可をする
一度再生アイコンを押し、アプリを許可してください。
これで、Salckに通知が飛べば成功です!
補足情報
getDataRange().getValues()について
getDataRange().getValues()は、配列でデータをまるっと取得します。
var data = sheet.getDataRange().getValues();
data
の中身はこのようになります。
[
[タイトル1,著者1,概要1],
[タイトル2,著者2,概要2],
[タイトル3,著者3,概要3],
]
そのため、data[行][列]で、特定のセルのデータを取得できます。
5. トリガーを作成
イベントのソースを時間主導型にして、発火させたい日時を指定してください。
今回は、週に1度お知らせして欲しいため、週ベースのタイマー/水曜日/9:00-10:00を選択しています。
完成!
これで、トリガーがきちんと動作すれば成功となります!
Author And Source
この問題について(スプレッドシートのリストからランダムで選んでSlackに投稿する積ん読BOT), 我々は、より多くの情報をここで見つけました https://qiita.com/kisaichi07/items/641f3a9a75b9236b938f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .