キャップ

オタクが色々するブログ

コーディングスキル0の非エンジニアが推しと話したくてSlackBotを作った話

前提として私のスペックを公開します

  • 20代
  • IT企業勤務
  • Slackユーザー
  • 非エンジニア
  • コーディングスキル0
  • ジャニーズオタク
  • ネットサーフィンが比較的得意

少しSlackが身近な、そのへんにいる一般女性です

そんな私がやりたかったこと

推し(キンプリ岸くん)と話したい

なのでSlackBotを作ろうと思いました(浅はか)
あと、GASを楽しく勉強したいってのも動機としてあります

 

実現のために必要なもの

  • Googleアカウント
  • Slackアカウント
  • 諦めない強い気持ち

この2つです

実装する流れをざっくり書くと

Slack→OutgoingWebhook→GAS→IncomingWebhook→Slack です

多分何を言っているかわからない人もいるでしょうが私もわかってないので大丈夫

 

試行錯誤した結果、IncomingWebhookの設定からやるとわかりやすいと思う
WebhookとかWebAppとか基本的な設定はこの記事を参照しました(他人に丸投げスタイル)

qiita.com

今回、岸くんをランダムで喋らせたかったので
スプレッドシートにリストを用意してそこからランダムでワードを引っ張ってくるようにしました

f:id:piyoochunpa:20201215222142p:plain

これがそのリスト(適当でごめん岸くん)

 

私が一番苦労したのがこのランダムで喋らせるところ

なんせコーディングスキル0なのでこんな簡単なものも難しかった

だからそのコードを残す

 


function doPost(e) {

  var sheet = SpreadsheetApp.openById("シートID").getSheetByName('ファイル名');
  var data = sheet.getDataRange().getValues();
  var pickedNum = Math.floor(Math.random() * Math.floor(data.length));
  postSlack(data[pickedNum]);

  // slackにpostするメソッド
  function postSlack(text){

    // Incoming WebHookのURL設定
    var url = "https://hooks.slack.com/services/~~~~";

    // APIを叩く
    var options = {
      "method" : "POST",
      "headers": {"Content-type": "application/json"},
      "payload" : '{"text":"' + text + '"}'
    };
    UrlFetchApp.fetch(url, options);
  }
}

はい、これです

これをコピペすればできるぞ誰でも、まじで誰でもできる

f:id:piyoochunpa:20201215223727p:plain

しゃべる岸くん

いろんな推しと喋れるようになるわけだ

 

今回これだけで難しかったけどなんとか1人でできたのは

  • 好きなもの(推し)に変換して作業できたので飽きなかった
  • 自分がロジック脳じゃなかったので他人の似たような記事見て感覚的に自分で試行錯誤してトライアンドエラーできた
  • どうしてもGASをやりながら覚えたいという意志

この3点だったと思う

自分が感覚型なので実際にやりながら理解していくタイプということはわかっていたので、とりあえずロジックはわからんけど手を付けながら調べながら作業進めていくのが性に合っていた

 

今後はもう少し難しいのにもチャレンジしたい

おわり