Edited at

スプレットシートの更新をworkplaceFeedに通知する

タイトル通り、通知BOTを作る手順をメモします。

WorkPlaceはまだまだ流行っていないので、資料が少ないですね!

チャットに通知するBOTも作りたかったのですが、権限がなく、権限のある方に頼むこともできなかったので、諦めましたw

ので、ここではフィード投稿までをゴールとさせていただきます。


作成手順

今回は「TODOリストに✓が付いたらWorkplaceに通知する」ものを作ってみましょう。


1. スプレッドシートを作成します

新しいスプレッドシートを作成からTODOを選びましょう

スクリーンショット 2019-06-17 11.00.37.png

適当にタスクを追加します

スクリーンショット 2019-06-17 11.04.07.png


2. チェックがついたらアクションするコードを作成

メニューバーからツール->スクリプトエディタ


constants.js

var CHECK_COLUMN = "1"; // 納品通知カラム数(A)



main.js

/**

* アクティブセルのステータスをチェック
* トリガー: 編集時
*/

function getState() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var activeCell = sheet.getActiveCell();
var rowNum = activeCell.getRow();
// チェックBOXがアクティブ&&チェック付いてる時、通知する
if(activeCell.getColumn() == CHECK_COLUMN && activeCell.getValue()) {
// 同列の値も取得して通知します
Browser.msgBox('日付: ' + sheet.getRange('B' + rowNum).getValue() + '\nタスク: ' + sheet.getRange('C' + rowNum).getValue());
}
}

チェックが付いたか否かを調べるために、編集時にこのコードを実行させます。(トリガーの設定)

トリガーの設定は、スクリプトエディタ上部の「編集」⇒「現在のプロジェクトのトリガー」から行います。

トリガーの追加で、以下のように条件を選びます。

スクリーンショット 2019-06-17 11.20.41.png

その後アクセスを許可までして完了です

チェックを付けたら実行されたらOK

スクリーンショット 2019-06-17 11.36.03.png


3. WorkplaceでBOTアプリを作成

※BOTを作るには、そのグループの管理者権限が必要です。

BOTを使うグループのメニューからIntergrationsを開きます。

Create Publishing Botから作成

スクリーンショット 2019-06-17 11.26.11.png

今回はテスト用に作ってみました。

スクリーンショット 2019-06-17 11.26.57.png

Create New Access Tokenからトークンを取得・メモします。


4. BOT通知する

スプレッドシートにもどって、先程メモしたトークンをコードに書きましょう。


constants.js

// workplace

var FACEBOOK_API_URI = 'https://graph.facebook.com/v3.0';
var WORKPLACE_ACCESS_TOKEN = 'DQVxxxxxxx';

mainも編集します。


main.js

/**

* アクティブセルのステータスをチェック
* トリガー: 編集時
*/

function getState() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var activeCell = sheet.getActiveCell();
var rowNum = activeCell.getRow();
// チェックBOXがアクティブ&&チェック付いてる時、通知する
if(activeCell.getColumn() == CHECK_COLUMN && activeCell.getValue()) {
// 同列の値も取得して通知します
postWorkPlaceFeed('日付: ' + sheet.getRange('B' + rowNum).getValue() + '\nタスク: ' + sheet.getRange('C' + rowNum).getValue());
}
}

/**
* Workplaceに投稿する
*/

function postWorkPlaceFeed(text) {
UrlFetchApp.fetch(FACEBOOK_API_URI + '/group/feed?&access_token=' + WORKPLACE_ACCESS_TOKEN, {
method : 'POST',
contentType : 'application/json',
payload : JSON.stringify({
message: '# タスクが完了しましたBOT\n' + text, // 投稿内容です
formatting : 'MARKDOWN' // MarkDown使いたい場合はここにいれましょう
})
});
}


公開前に、認証を許可しなくてはなりません。

スクリプトエディタ上部の「編集」⇒「現在のプロジェクトのトリガー」からスクリプトを実行します。

スクリーンショット 2019-06-17 11.38.34.pngスクリーンショット 2019-06-17 11.38.42.png

認証したらチェックBOXにチェックを付けてみましょう。

Workplaceに投稿されたら成功です!

スクリーンショット 2019-06-17 11.41.23.png


おわり

とても簡単だったと思います。

Workplaceは資料が少なかったので、メモをかねてまとめてみました。

チャットとFeedは、またBOTの役割が変わると思います。どう使っていくか運用次第ですね

お役に立てたら光栄です。

間違いなどありましたらご指摘お願いします!


参考サイト

今回の記事には関係のないのも混じっていますが、botを作ってくうちに参考になったものをまとめておきます。

- Googleスプレッドシートだけで作るFB messenger bot

- Facebook Messenger Botの作り方 〜AWS Lambda(Serverless)での構築〜

- Bots for Workplace

- Facebook にボットを接続する

- 初めてのサーバーレスアプリケーション開発 ~Serverless Framework を使ってAWSリソースをデプロイする~

- (公式)POST

- WorkplaceのAPIでPOSTする時にメンバーにメンションしたい