自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

Chatworkの投稿内容をGoogleスプレッドシートに自動で反映させる

qiita.com

思いの外簡単そうだったのでこれをやってみる。

用意するもの

  • Googleスプレッドシート
  • Chatwork

ざっくり手順

  1. スプレッドシート作成
  2. スクリプトエディタでdoPostとJSONパーサを記述
  3. スクリプトAPI公開
  4. ChatworkでWebhookを作成してスクリプトのURLを指定

まずはスプレッドシートを用意

空っぽでOK。スクリプトエディタを開く。

f:id:maru0014:20190910231144p:plain
ツール→スクリプトエディタ

Chatworkからデータを受け取るスクリプト

以下をコード.gsに貼り付け

function doPost(e) {
  try {
    var json = JSON.parse(e.postData.contents);
    var body = json.webhook_event.body;
    SpreadsheetApp.getActiveSheet().appendRow([body]);
  } catch (e) {
    return false;
  }
  return true;
}

f:id:maru0014:20190910232548p:plain
保存

f:id:maru0014:20190910232434p:plain
公開→ウェブアプリケーションとして導入

f:id:maru0014:20190910232624p:plain
全員(匿名ユーザーを含む)を選択して「導入」

Googleアカウントを選択して進む

f:id:maru0014:20190910232723p:plain
こんなのが出たら「詳細」をクリック

f:id:maru0014:20190910232759p:plain
安全ではないページに移動

f:id:maru0014:20190910232849p:plain
許可をクリック

f:id:maru0014:20190910232920p:plain
表示されたURLをコピーしておく

chatworkの設定

f:id:maru0014:20190910233002p:plain
画面右上の「API設定」を開く

f:id:maru0014:20190910233206p:plain
Webhookの新規作成でさっきのURLをコピペ、その他設定

ここまでで設定完了

動作テスト

f:id:maru0014:20190910233325p:plain
対象のルームに投稿

f:id:maru0014:20190910233352p:plain
約1秒後にはスプレッドシートに表示された!

もうちょっと色々データ取りたいよね

chatworkのWebhookで送信されるリクエスト内容は以下

Chatwork APIドキュメント

{
    "webhook_setting_id": "12345",
    "webhook_event_type": "mention_to_me",
    "webhook_event_time": 1498028130,
    "webhook_event":{
        "from_account_id": 123456,
        "to_account_id": 1484814,
        "room_id": 567890123,
        "message_id": "789012345",
        "body": "[To:1484814]おかずはなんですか?",
        "send_time": 1498028125,
        "update_time": 0
    }
}

ユーザはIDのみ、投稿日時はUNIXタイムスタンプ。

それぞれ変換が必要そうですね。

以下の記事がとても参考になりそう。そのうちやりたい。

tonari-it.com