質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

1208閲覧

GoogleFormに投稿された情報をもとに、特定ユーザーにSlackで通知する方法

daidea

総合スコア9

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2018/06/21 06:46

前提・実現したいこと

1.Google Formで投稿された内容をSlackに通知 →完了

2.Google Formで登録された情報を参照し通知ユーザーを特定

3.2の特定のユーザーにSlackメンション通知

ここに質問の内容を詳しく書いてください。

上記、1番は下記の方法でできたのですが、
その後、フォームに登録された情報をもとに特定Slackユーザーを判別、
そのユーザーにメンション通知するやり方が詰まっています。

そのやり方についてご教授ください。
よろしくお願いいたします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

var SLACK_URL = 'https://hooks.slack.com/services/xxxxxxxx'; // 控えておいたWebhook URLに変更してください var CHANNEL = '#hook-test'; // 投稿したいChannelの名前を入れてください var USERNAME = 'Google Form'; // 何の名前でSlackに投稿するか設定してください function onSubmit(e) { var itemResponses = e.response.getItemResponses(); var fields = []; for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; fields.push({ title: itemResponse.getItem().getTitle(), value: _formatResponse(itemResponse.getResponse()) }); } _sendToSlack(SLACK_URL, CHANNEL, USERNAME, fields); } function _formatResponse(response) { if (Array.isArray(response)) { response = response.join(', '); } return response; } function _sendToSlack(url, channel, username, fields) { var payload = JSON.stringify({ channel: channel, username: username, attachments: [{ fallback: 'フォーム投稿されました', color: '#1487C3', // 好きな色に変更してください fields: fields, mrkdwn_in: ['fields'] }] }); UrlFetchApp.fetch(url, { method: 'post', contentType: 'application/json', payload: payload }); }

試したこと

1.Google Formで投稿された内容をSlackに通知

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Google Formで送信したユーザのメールアドレスは

Javascript

1e.response.getRespondentEmail()

にて取得可能です。

メールアドレスとユーザIDとの紐づけはご自身で考えていただくとして、
(スプレッドシートにもつのか、ハードコーディングするのか…)

あとは

JavaScript

1var payload = JSON.stringify({ 2 channel: channel, 3 username: username, 4 text: '<@ユーザID>', 5 attachments: [{ 6 fallback: 'フォーム投稿されました', 7 color: '#1487C3', // 好きな色に変更してください 8 fields: fields, 9 mrkdwn_in: ['fields'] 10 }] 11});

といった形でメンションしてみてはいかがでしょうか?

投稿2018/06/25 07:02

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問