個人秘書Riho開発日記2 - スプレッドシートにメモしてみた

f:id:stkn_bb:20170528162630p:plain

前回、SlackとGoogleAppsScriptで簡単なbotを作成した。

satoken.hateblo.jp

今日は #memo チャンネルに追加されたメモをスプレッドシートに残したいと思う。

参考のURLを参考にした。

コードはこんな感じ。

function doPost(e) { // Slack WebHooks
  if (e.parameter.user_id != "U5JRB0AM9") {
    return
  }
    
  var sheet = SpreadsheetApp.openById("SPREAD_SHEET_ID")
  sheet.getSheetByName("memo").appendRow(
    ["", new Date(), e.parameter.text]
  );
    
  var token = "SLACK_TOKEN";
  var channel = "memo"; // 投稿先チャンネル名
  var username = "Riho"; // BOTの名前
  var text = "メモしたよ。"; // メッセージ
  var icon_url = "吉岡里帆ちゃんのいい感じの写真URL" // アイコン
  UrlFetchApp.fetch("https://slack.com/api/chat.postMessage?token=" + token + "&channel=%23" + channel + "&username=" + username + "&text=" + text + "&icon_url=" + icon_url);
}

※2017/8/5追記 投稿APIがGETリクエストで通らなくなったのでPOSTに変更しました。詳しくは下記の記事で。
個人秘書Riho開発日記4 - Slack投稿APIのエラーを修正した - さとろぐ

工夫した点として、
2行目に発言者のIDを判定し、自分のID以外の場合は return するようにした。
メモをする度にトリガーキーワードの riho: や @riho などを記載するのがめんどくさいからだ。
これをやっておくとトリガーキーワード無しで設定してもbot自身の発言を拾って無限ループに陥ることがなくなる。

やらないとこうなる↓

f:id:stkn_bb:20170611211707p:plain

もしくは↓

f:id:stkn_bb:20170611211935p:plain

んで、肝心の動作はこんな感じ

f:id:stkn_bb:20170611211700p:plain

f:id:stkn_bb:20170611211657p:plain

おおおおおおお!

んで、スプレッドシートを整形しておくとこうなる

f:id:stkn_bb:20170611211704p:plain

(とりあえず1行空けたいタイプなのでソースコード8行目の配列の一番最初に空文字が入ってます)

これを応用して、支払った金額を入力すると今月の残り予算を返してくれるような家計簿botを作成したいと思う。

f:id:stkn_bb:20170611213306j:plain