24
22

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

スプレッドシートのリストからランダムで選んでSlackに投稿する積ん読BOT

Posted at

共有の積ん読リストから1冊ピックアップしてSlackに投げる、積ん読BOTを作る!

スプレッドシートにメモした積ん読リストの中から、週に一度、一冊ピックアップして情報を投げるアプリを作成しました。

IMG_1731.JPG

スクリーンショット 2020-05-19 23.34.47.png

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を書く

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()は、配列でデータをまるっと取得します。

たとえばこのようなスプレッドシートがあった場合
スクリーンショット 2020-05-20 12.11.24.png

var data = sheet.getDataRange().getValues();

data の中身はこのようになります。

data
[
[タイトル1,著者1,概要1],
[タイトル2,著者2,概要2],
[タイトル3,著者3,概要3],
]

そのため、data[行][列]で、特定のセルのデータを取得できます。

5. トリガーを作成

イベントのソースを時間主導型にして、発火させたい日時を指定してください。
今回は、週に1度お知らせして欲しいため、週ベースのタイマー/水曜日/9:00-10:00を選択しています。
スクリーンショット 2020-05-19 23.21.26.png

完成!

これで、トリガーがきちんと動作すれば成功となります!

24
22
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
24
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?