(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。チャットワークWebhookとGASの連携方法についてお伝えしております。チャットワークWebhookを使うことで、特定のルームへのメッセージ送信や、自分へのメンションをトリガーにしてGASのスクリプトを起動させることができるようになりました。前回は、以下の記事でWebhookの概要と、GASと連携をさせる仕組みについてお伝えしています。チャットワークのメッセージの送信をトリガーにGASを作動させられるWebhookが使えるようになったチャットワークAPIのバージョンアップによりWebhookが使えるようになりました。今回はWebhookとは何か、そしてWebhookとそのリクエストによりGASを動作させる仕組みについてお伝えします。tonari-it.com2017.12.02今回は、いよいよ実際に、チャットワークWebhookを使ってGASを起動するスクリプトとその手順をお伝えしていきます。前回のおさらいと今回やることWebhookを受け取るdoPost関数のスクリプトドキュメントに文字列を書き出すアクティブなドキュメントを取得するドキュメントからボディを取得するボディにテキストを書き出すウェブアプリケーションとして導入するチャットワークWebhookの作成チャットワークWebhookの実行まとめ連載目次:GASとチャットワークWebhookを連携させた便利ツール前回のおさらいと今回やることチャットワークWebhookを設定をすると、特定のルームへのメッセージの送信などのイベント発生時に、GASで用意した「ウェブアプリケーション」にPOSTリクエストを送ることができます。GASのほうでは、以下のdoPost(e)関数を用意しておくと、そのPOSTリクエストを受け取ったときに、その送られたデータを取り出しつつ何らかの処理を走らせることができるという動作になります。{//e.postData.contentsを取得して何らかの処理をする}今回は、チャットワークのマイチャットに何らかのメッセージを送信したときに、そのPOSTリクエストに含まれるデータを取り出して、Goolgeドキュメントに書き出すという処理をしてみたいと思います。Webhookを受け取るdoPost関数のスクリプトまず、GASで用意するdoPost関数のスクリプトを紹介します。スクリプトは、Googleドキュメントのコンテナバインドスクリプトとして作成します。新規のドキュメントを開いて、メニューの「ツール」→「スクリプト」で開いた画面にスクリプトを記述していきます。いうのも、doPost関数は「シンプルトリガー」という種類のトリガーでして、doPost関数からはバインドしているドキュメントしか操作ができないからです。今回はコンテナバインドで作る必要があります。それで実際のスクリプトはこちらです。DocumentApp.getActiveDocument().getBody();body.setText(e.postData.contents);}POSTリクエストを受け取った際に、リクエストのボディに含まれるデータをバインドしているドキュメントに書き出すというものです。前回お伝えした通り、Eventオブジェクトeから、POSTデータを取り出すにはEventオブジェクト.postData.contentsとします。ドキュメントに文字列を書き出すいくつかドキュメントに関する操作がありますので、紹介しますね。アクティブなドキュメントを取得するまず、スクリプトからアクティブなドキュメントを取得するには、getActiveDocumentメソッドを使います。DocumentApp.getActiveDocument()アクティブなドキュメントというのは、バインドしているドキュメントのことで、GASではDocumentオブジェクトとして取得できます。ドキュメントからボディを取得するドキュメントは、その配下のヘッダー、ボディ、フッター、脚注などといったいくつかの「セクション」から構成されています。今回は、ドキュメントの本体であるボディに、POSTリクエストの内容を書き出したいので、ボディセクションを取得します。ドキュメントからボディを取得するには、以下のgetBodyメソッドを使います。Documentオブジェクト.getBody()これでボディセクションをBodyオブジェクトとして取得できます。ボディにテキストを書き出すボディセクションにプレーンテキストを書き出すには、setTextメソッドを使います。Bodyオブジェクト.setText(文字列)この場合、完全に上書きになりますので、ボディに何かが入力・配置されているときに実行をすると、いったんすべて削除されたうえで、文字列が書き出されるということになります。ウェブアプリケーションとして導入するdoPost関数が完成したら、このスクリプトをウェブアプリケーションとして導入します。Webhookの送信先となるURLを生成するのです。スクリプトエディタの「公開」→「ウェブアプリケーションとして導入...」を選択します。「ウェブアプリケーションとして導入」ダイアログでは、それぞれ以下のように設定をして「導入」とします。プロジェクトバージョン:任意(例えば「最初のバージョン」)次のユーザーとしてアプリケーションを実行:自分アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)すると、以下のようにウェブアプリケーションのURLが取得できますので、ばっちりメモしておきます。これでGAS側の準備は完了です。次にチャットワークWebhookの作成をしていきます。プロフィールアイコンをクリックして開くメニューから「API設定」を選択します。API設定画面が開きますので、左側のメニューから「Webhook」を選び「新規作成」をクリックします。Webhookの新規作成画面にて、以下のように入力して「作成」です。「メッセージ作成」にチェックルームID:送信先ルームIDちなみに、ルームIDは上記画面にも書いてある通り、そのグループチャットを開いたときのURLの以下{ルームID}の部分です。https://www.chatwork.com/#!rid{ルームID}これで、チャットワークWebhookの作成も完了です。チャットワークWebhookの実行では、実行してみます。Test」などと、メッセージを送信してみました。スクリプトを仕込んだドキュメントを開くと、いかのようにPOSTリクエストのボディが書き出されます。タイムラグはほとんどなしです!まとめチャットワークWebhookを使ってメッセージ送信でGASを起動する方法についてお伝えしました。GASでdoPost関数を作るGASのスクリプトをウェブアプリケーションとして導入するチャットワークWebhookを作成するという流れになります。今回のは単純なものでしたが、この応用で本当にいろんな処理を実行できます。次回以降、過去つくった「おみくじチャット」をWebhook対応に変更をしていきたいと思います。GASとチャットワークWebhookで即レスポンスのおみくじチャットを作る方法GASとチャットワークWebhookを連携させて、いろいろな便利ツールを作っています。今回は、GASとチャットワークWebhookを使って、すぐに返事が返ってくるおみくじチャットを作る方法をお伝えします。tonari-it.com2017.12.04どうぞお楽しみに!連載目次:GASとチャットワークWebhookを連携させた便利ツールチャットワークAPIのバージョンアップでメッセージ送信や自分へのメンションをトリガーにしたWebhookを使用することができるようになりました。GASとの連携により色々な便利ツールを作っていきます。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。SQLのデータベースにアクセスする方法をシリーズでお伝えしています。SQLのデータベースにレコードを追加する方法です。ScriptでWebアプリケーションを作る方法についてお伝えしています。今回GASのWebアプリケーションにCSSでスタイル設定をする方法です。CSSを別ファイルにする方法もありますよ。ScriptGASで作成したWebページにファビコンを設定する方法GASユーザーのためのHTML入門、簡単なWebページの作り方をお伝えしています。今回は、GASで作成したWebページにファビコンを設定する方法です。Googleドライブ内の画像の指定の仕方もありますよ。SQLのデータベースにアクセスする方法をシリーズでお伝えしています。SQLインスタンスに接続する方法です。ScriptではGmailを操作してメールを送信することができます。実はその本文としてシンプルなテキストメールだけではんくHTMLメールを送ることができます。今回はその方法をお伝えします。Appsスプレッドシートのマクロ記録で簡単便利なカーソル移動のマクロを作ってみようスプレッドシートにマクロの機能が追加されました。マクロ記録を使えば、スプレッドシートの操作を記録しコードとして起こすことができます。今回は、その概要とともに記録と実行の方法を初心者向けに解説をしていきます。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。