「Slackのチャンネルに投稿されたメッセージをGoogleスプレッドシートに書き込んでいきたい」と思った時に使える便利なAPI「Outgoing Webhook」がSlackにありました。
前回までで「Outgoing Webhook」の準備は完了しましたので、続きを作っていきます。
GASを新規作成する
Slackの「Outgoing Webhook」の準備ができたら、次はGAS側の準備をしていきます。
まずは、スプレッドシートのコンテナバインドとして、GASを作成します。コンテナバインドとは?という方はこちらをご参考ください。
スプレッドシートを新規作成します。
スプレッドシートにデータを書き込む
まずは、スプレッドシートにデータを書き込むための変数を準備します。
関数をdoPost(e)(WebアプリにPOSTリクエストが送られた時に実行される関数)で作成しておき、スプレッドシートのデータを取得・スプレッドシートにデータを書き込みできるようにします。
function doPost(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ取得');
}
「データ取得」シートにデータが送信されます。
最終行の次の行にデータを書き込む
最終行の次の行にデータを書き込まないと、上書きされてしまいますので、最終行に1を加えた変数を準備します。
function doPost(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ取得');
const lastrowNext = sheet.getLastRow()+1;
}
これで、最終行に1加えた行にデータを書き込みできるようになります。
Slackで投稿したメッセージをスプレッドシートに書き込めるようにする
Slackで投稿したメッセージを受け取れるように、パラメータを取得します。
.user_nameでユーザー名、.textでテキスト(メッセージ)を受け取れます。
function doPost(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ取得');
const lastrowNext = sheet.getLastRow()+1;
const username = e.parameter.user_name;
const text = e.parameter.text;
}
Slackで投稿したメッセージをスプレッドシートに書き込む
Slackで投稿したメッセージがスプレッドシートに書き込めるようにします。
function doPost(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ取得');
const lastrowNext = sheet.getLastRow()+1;
const username = e.parameter.user_name;
const text = e.parameter.text;
sheet.getRange( lastrowNext, 1).setValue(username);
sheet.getRange( lastrowNext, 2).setValue(text);
return;
}
1列目にユーザー名、2列目にメッセージが書き込まれます。最後に結果を受け取れるようにreturnします。
デプロイする
ここまでくれば準備完了です。あとはGASをデプロイします。
[rml_read_more]
この時、アクセスできるユーザーは全員である必要があるので、変更します。あとはデプロイします。
デプロイされました!あとは発行されたURLを、前回作成したアプリケーションに接続させます。
Slackのメッセージがスプレッドシートに書き込まれる
何かしらデータが書き込まれるのか、テストしてみます。
スプレッドシートにデータが書き込まれました!
まとめ
これで、SlackからGoogleスプレッドシートにデータを書き込むことができました。送信するたびに末尾業の次の行にデータが書き込まれていき便利です。
Slackに「Outgoing Webhook」という便利な仕組みがありましたので、御参考ください😃