LoginSignup
3
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-06-17

タイトル通り、通知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する時にメンバーにメンションしたい

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2