【マニュアル】簡単名言botを自分で作る(Slack+GAS編)その1


 さて今回私がご紹介するのは、Slackでランダムに自分の好きな名言を出現させる方法です。
 自分で簡単に好きな人の名言を日めくり的に出現させるbot作りたいけど、ググってもプログラミングの知識がないと難しそうだし、、と思っている方向けです。
 これ真似すれば、1時間もかからずに作れるはず。
 私も初心者ですが、いろいろググっても難しかったので、自分で一番簡単だと思った手順でマニュアルを作りました。

▼使うもの・用意するもの

  1. Slack ※名言botを出現させたいチャンネルと、Slackワークフロービルダー用にIcon用画像やコメント用絵文字を用意しておくとベネ。
  2. Google Spread Sheet(GSS)※名言をシートに用意する。Google App Script(GAS)を使いますが、本記事を参照にコピペでやってみて。

▼おおまかな手順

  1. Slackワークフロービルダーのテンプレートから、スクラッチのワークフローを作成する。(その際Webhook用のURLをメモ帳等にコピっておく)
  2. GSSのA列に名言を好きなだけ書く。行ごとにランダムに出現できる。後で追加も出来るのではじめは少なめで可。
    ネットに名言をまとめたサイトがたくさんあるので、そこからコピペ利用するのも良し。
    ちなみに私は、ココのサイトがお気に入りです。https://iyashitour.com/meigen 
  3. GSSのGASで、Slackに出現させるためのスクリプトを書く。試しに実行して成功したら、タイマー設定で好きなスケジュールを組む。

▼以下、手順です。

1.Slackワークフロービルダーのテンプレートから、スクラッチのワークフローを作成する。(その際Webhook用のURLをメモ帳等にコピっておく)

  1. Slackワークフロービルダーのテンプレートから、以下を選択。
     

  2. 任意の名前をつける。
       

  3. Webhookを選択して
      

  4. 変数を追加するためのボタンを押下して
     

  5. 「Key」に「text」といれて
     

  6. Stepを追加して
     

  7. Send a Message(メッセージを送るかな?)を選択して
     

  8. 投稿したいチャンネルを選択して、メッセージ欄に5で作った「変数」を追加して(ここで任意の絵文字とか文章とかの定型文をいれてもよし)
     

  9. (Icon変えるのはココ。これはアイコン変わるだけなので作成したワークフローを保存し終わってから変えてください。変えなくても良し)
     

  10. Publish(公開)を押すと、
     

  11. WebhookのUrlが生成されるので、「Copy」を押して、メモ帳とかに貼り付けておく。(あとでGASにコピペします)
     

  12. これで、Slack側の準備は完了。ワークフロービルダーは閉じてOK。

 

2.Google Spread Sheet(GSS)※名言をシートに用意する。Google App Script(GAS)を使いますが、本記事を参照にコピペでやってみて。

  1. GSSで名言を用意する。Sheet1のA列の1行目から縦に詰めて書く。B列はGASで使うので何も書いちゃいけない。ファイル名は任意で良い。
     
  2. 「ツール」から「スクリプトエディタ」を選択して
     
  3. このコードをスクリプトエディタの「コード.gs」画面(デフォルトで表示されているはず)にコピペする。
node-google-apps-script
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('シート1');
var range = sheet.getRange("シート1!B1").setFormula('=INDIRECT("シート1!A:A" & INT(RAND()*10+1))'); //「10」は、名言を書いた行数。例えば、1~15行目まで書いたら「15」にする。
var message = sheet.getRange("シート1!B1").getValue();
var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : JSON.stringify(
      {
        "text" : message
      }
    )
  };
UrlFetchApp.fetch("https://hooks.slack.com/workflows/xxxxxxxxxxxxxxxxxxxxxxxxxxx", options); //””の間に、slack側で取得したurlをコピペする。
} 
  1. コードを編集する。(以下2点をチェック)
    ①4行目の 「10+1」の「10」はGSSで名言を書いた行数とする。例えば1~15行目まで書いた場合は「15」とする。
    ②最後のurlfetchAppの行にある「https://~xxx」の最後までの部分をSlackの11.で取得したurlに置換する。
  2. 「実行」を押してテストしてみる。(認証を要求する画面が出てきたら、確認してよしなに進めてください。)
     

と、ここまで書いていたら、画像が貼り付けできなくなりました。
画像貼り付け制限があるのかな?
「実行」してみて、成功すると、Slack側に名言Botが投稿されているはずです。あとは、GASのタイマー設定で任意のスケジュールを組めば完成なのですが、続きは<その2>で書くこととします。

続き読まなくても、だいたいわかったぜ!っていう方も、せっかくなので続きもみていただければ幸いです。

Qiitaもコードも初心者の私ですが、少しでも皆さんのご参考になれば幸いです。
以上、【マニュアル】簡単名言botを自分で作る(Slack+GAS編)その1を最後までお読みいただきありがとうございました。 

※追記 <その2>書きました。↓
 https://qiita.com/takeC74/items/06ea4c0fecd610b090bd