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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

1回答

3767閲覧

slack Outgoing Webhookを使用して投稿をスプレッドシートに書き込むGASが実行できるのにスプレッドシートに書き込まれない

bashi_

総合スコア11

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2021/11/24 08:17

編集2021/11/26 02:27

前提・実現したいこと

スプレッドシートから拡張機能(Apps Script)で以下のコードを作成し、実行も問題なく行えるのですが投稿してもスプレッドシートに書き込まれません。
Outgoing Webhookとも連携済みです。
何か原因わかりますでしょうか?

該当のソースコード

function dopost(e) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); // ←シート名を入力する var token = 'XXXXXXXXXXXXXXX' // ← Outgoing Webhook のトークンを入力しています(ここでは控えてあります) // Googleスプレッドシートにデータを追加する処理 if (token == JSON.parse.token){ var datetime = new Date(); var date = (datetime.getFullYear() + '/' + ('0' + (datetime.getMonth() + 1)).slice(-2) + '/' + ('0' + datetime.getDate()).slice(-2)) var time = (('0' + datetime.getHours()).slice(-2) + ':' + ('0' + datetime.getMinutes()).slice(-2)); var username = e.parameter.user_name; var text = e.parameter.text; array = [date,time,username,text]; sheet.appendRow(array); } return }

回答から試したもの

dopost -> doPostに変更
SpreadsheetApp.getActiveSpreadsheet()->SpreadsheetApp.openById("スプレッドシートID")に変更
⇒変化なし、スプレッドシートに書き込まれず

token == JSON.parse.token->token == e.parameter.tokenに変更
⇒下記のエラーコードがでてくるようになりました。

エラー TypeError: Cannot read property 'parameter' of undefined doPost @ コード.gs:6

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

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

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

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

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

guest

回答1

0

・dopost -> doPost ではないでしょうか?

・冒頭を下記のように直した場合どうでしょうか?(スプレッドシートIDは実際のスプレッドシートIDに直して下さい)

追記:JSON.parse.tokenをe.parameter.token に修正

diff

1function doPost(e) { 2- var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); // 削除 3+ var sheet = SpreadsheetApp.openById("スプレッドシートID").getSheetByName('シート1');  // 修正 4 var token = 'XXXXXXXXXXXXXXX' // ← Outgoing Webhook のトークンを入力しています(ここでは控えてあります) 5 6 // Googleスプレッドシートにデータを追加する処理 7- if (token == JSON.parse.token){ 8+ if (token == e.parameter.token){ 9以下略

投稿2021/11/24 11:52

編集2021/11/25 13:08
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

bashi_

2021/11/25 00:35

ご回答ありがとうございます。ご回答いただいたように訂正致しましたが、スプレッドシートに表示されませんでした、、、その他に原因わかりましたら教えて頂けると幸いです。
退会済みユーザー

退会済みユーザー

2021/11/25 13:09

追記しました。 (JSON.parse.token を e.parameter.tokenに修正)
bashi_

2021/11/26 02:29

再度、ご教授頂きありがとうございます。 エラーコードが出てきてしまいました。 詳細は回答から試したもので記載しました。
退会済みユーザー

退会済みユーザー

2021/11/26 11:20 編集

GAS側のデプロイと、SLACK側の設定は正しく設定できていますでしょうか? コードを記述して保存 →GAS画面の右上の「デプロイ」ボタン→「新しいデプロイ」→歯車のアイコンをクリック →「ウェブアプリ」を選択 →「アクセスできるユーザー」を「全員」に変更して右下の「デプロイ」ボタンをクリック。 ↓ ※ここで「アクセスの承認」ボタンが出た場合は、承認する。(出ない場合もあります) ↓ しばらくすると出てくるウェブアプリのURLをコピーして、 slackのOutgoing Webhoookの設定画面内のURLの項目にペーストして設定。(画面参考:https://qiita.com/keronori/items/8f95e574f08d82f02b06#1-5-outgoing-webhook%E3%81%ABgas%E3%81%AE%E5%B0%8E%E5%85%A5) ↓ その後、slackからメッセージ投稿 正しく設定できていれば、スプレッドシートに書き込まれるはずです ※GASで直接doPost関数を実行するのではありません。GASで直接doPost関数を実行しても上記のエラーが出るだけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問