2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Googleフォームの投稿内容をHangouts Chatへ送信したい

Last updated at Posted at 2019-08-23

Googleフォームにはフォーム投稿内容を自動でスプレッドシートへ出力する機能があるのですが、毎回スプレッドシートを確認するのも手間ですので、Google Apps Script(GAS)を使って投稿内容をHangouts Chatへ送信する仕組みを作ってみました。

実現したいこととやること

実現したいこと

  • Googleフォームの投稿内容をHangouts Chatへ自動送信したい

やること

  • Googleフォームの作成
  • Hangouts Chatでbot作成とWebhook URLの取得
  • GASソース準備
  • トリガーの設定

Googleフォームの作成

Googleフォームの書式自体は特に指定はありません。
好きな形式で作成すればよいかと思われます。

Hangouts Chatでbot作成とWebhook URLの取得

ここで解説するよりも、以下のリンク先を読んだほうがわかりやすいです。
GASからhangout chatにPostする - Qiita

GASソースの準備(サンプルソース)

作成したGoogleフォームの編集画面からスクリプトエディタを開き、以下サンプルを入力します。今回はソース内でフォームIDとスクリプトを紐づけていないため、フォーム編集画面から直接スクリプトエディタを起動する必要があります。

function SubmitForm(e){
  //Googleフォームの投稿内容をitemResponsesへ入れる
  var itemResponses = e.response.getItemResponses();

  //Googleフォームの質問項目名と回答を順番に変数textへ入れる
  var text = "Googleフォームの投稿内容です";
  for(var i=0; i<itemResponses.length; i++){
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    text += "\n" + question + "\n" + answer;
  }

  //Hangouts ChatのチャットルームWebhook URL。前項で取得したURLをコピペすればOKです
  var post_url = "https://chat.googleapis.com/v1/spaces/xxxxxxxxxxxxxxxxxxxx";

  //チャットルームに投稿する本文(JSON形式) → 変数textの中身を入れているだけ
  var payload = {
    "text": text
  }

  //投稿する際のおまじない(JSON形式)
  var options = {
    "method":"POST",
    "headers":{"Content-Type":"application/json; charset=UTF-8"},
    "payload": JSON.stringify(payload),
    "muteHttpExceptions":true
  }

  //指定したチャットルームのURLへ投稿する
  var result = UrlFetchApp.fetch(post_url, options);
}

トリガーの設定

トリガー設定画面から、以下の条件でトリガーを追加します。

  • 実行する関数を選択 - SubmitForm
  • イベントのソースを選択 - フォームから
  • イベントの種類を選択 - フォーム送信時

これにより、Googleフォームを送信したタイミングでSubmitFormが起動し、投稿内容が指定のHangouts Chatのチャットルームへ投稿されます。

何がおいしいの?

Googleフォームは外出先からスマートフォンでちょっとした報告をするのにとても便利・有用なツールです。今回はその投稿内容をHangouts Chatへ送信しましたが、ほとんど同じ仕組みでスプレッドシート(簡易DB)やスライド(報告書)の作成・更新、その他APIを叩くようなサービス(Slackなど)も利用できるので、積極的に使っていきたいですね。

参考にしたもの

[超簡単]Hangouts Chat の incoming webhooks を使ってAPIから簡単にメッセージを投稿する
GASからhangout chatにPostする

2
7
0

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
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?