LANG SELRCT

コードを書く場所についてはこちら

2017年11月19日日曜日

Slack BOTで投稿されたメッセージをスプレッドシートに入力する

bot@hello と投稿した時に
指定したシートにhelloを入力して
そのシートの何行目に入力したかSlackに返す例です

bot@helloと投稿後
SlackにシートのURLと行数が返ってくる

指定したシートにhelloが入力される




  1. Google Apps Scriptで応答用のアプリケーションを作る
  2. Slack側の設定をする

1, 2の方法は以下の記事に書きました



コード.gsの例です



コード.gs
var TOKEN = "取得したtoken"
var POST_URL = 'https://slack.com/api/chat.postMessage';

function doPost(e) {
  var text = e["parameter"]["text"];
  var value = text.replace("bot@", "");
  value = value.replace(/\s/g, "+");
  var ss_url = "URL";
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sh = ss.getSheets()[0];
  var row = sh.getLastRow() ;
  var next_row = row + 1;
  sh.getRange("A" + next_row).setValue(value);
  reply(ss_url, row);
}

function reply(ss_url, row){
  var payload = {
    token: TOKEN,
    channel: '#general',
    text: ss_url + "\n" + row + "行目に入力しました",
    icon_emoji: ':sunny:',
    username: 'hello bot'
  };
  var params = {
    'method': 'post',
    'payload': payload
  };
  UrlFetchApp.fetch(POST_URL, params);
}
意訳.gs
取得したtokenを設定する
メッセージを送るurlを設定する

この機能は以下を実行する
送信されたテキストを取得して
"bot@"を削除して
空白(スペース、タブ、改行)を+に置き換えて
スプレッドシートのURLを設定して
スプレッドシートを取得して
先頭のシートを取得して
そのシートでデータが入っている最終行を取得して
次の行を選択して
A列のその行に入力して
reply()にss_url, rowを渡す


この機能は以下を実行する
payloadのデータを作る
取得したtokenを設定
投稿するchannelを設定
投稿するtextを設定
アイコンの絵文字を設定
usernameを設定

paramsのデータを作る
methodをpostに設定
payloadのデータを設定

paramsを付けてslackのAPIをたたく