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

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

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

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Q&A

解決済

1回答

186閲覧

chatworkと連携したフォームのGASが正常に作動しなくなった

tctctam

総合スコア1

Google Apps Script

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

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

0グッド

2クリップ

投稿2024/02/21 10:48

実現したいこと

chatworkと連携させているフォームを正しく機能させ、フォーム送信した内容がchatworkに投稿されるようにしたいです。
APIトークン以外の部分は変更していません。

発生している問題・分からないこと

APIトークンを変更したところ、これまで正常に作動していたGASがエラーを起こすようになってしまいました。

エラーメッセージ

error

1TypeError: Cannot read properties of undefined (reading 'response') 2onSubmit @ コード.gs:3

該当のソースコード

function onSubmit(event) { var response = event.response; var itemResponses = response.getItemResponses(); var Name = "〇〇さん";   // ★要変更★  var chatworkToken = 'ここにAPIトークンを入力しています'; // ChatworkのAPIトークンを入力してください ※現在は管理用アカウントに設定 var roomId = 'ルームID'; // ★要変更★ 送信先のグループチャットのIDを入力してください var message = ""; for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); message += question + ": " + Name + " " + answer + "\n"; } var chatworkUrl = 'https://api.chatwork.com/v2/rooms/' + roomId + '/messages'; var options = { method: 'POST', headers: { 'X-ChatWorkToken': chatworkToken, 'Content-Type': 'application/x-www-form-urlencoded', }, payload: { body: message, }, }; var response = UrlFetchApp.fetch(chatworkUrl, options); Logger.log(response.getContentText()); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

eを取得できていないというところまでは理解したのですが、トークンの変更しかしていないためどうすればよいか分かりません。

補足

特になし

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

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

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

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

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

YellowGreen

2024/02/21 19:54

スクリプトエディタから、実行した時のエラーですね。フォームからの送信が無いからです。 フォームを送信した時に今までどおりでしたら、それが通常の動作です。
tctctam

2024/02/22 02:31

コメントありがとうございます。 フォームからの送信も失敗しており、トリガーの実行履歴に失敗した履歴が残っている状態なのですがこれは何が原因か分かりません。(いずれもAPIトークンを変更したのみで起こっているエラーです) このスクリプトを作成したのが自分ではないため、再度承認要求をされたので承認したのですが それによってフォームとスクリプトの連携が切れているとかなのでしょうか…?
tctctam

2024/02/22 02:40

試しに元のAPIトークンに戻すと通常通り作動しました。 これは変更したAPIトークンに問題があるという事だと思うのですが、何が悪いのかが見当もつかず困っています…。
YellowGreen

2024/02/22 03:55 編集

var options = { method: 'POST', headers: { 'X-ChatWorkToken': chatworkToken, 'Content-Type': 'application/x-www-form-urlencoded', }, payload: { body: message, }, muteHttpExceptions: true, // ← この行を追加 }; 上記のとおりoptionsの内容を追加して フォームの回答が送信されたときの 実行数で「失敗しました」又は「完了」のログの内容をご確認ください。 エラーの内容が表示されると思います。
tctctam

2024/02/22 06:29

ご教示ありがとうございます。 指定された行を追加したところ、 問題のAIPトークンを入力した状態でも「失敗しました」のログは残りませんでした。 しかし該当のチャットルームに投稿はされていませんでした。 トリガーのログには下記のメッセージが記載されていました。 {"errors":["You don't have permission to send/edit message."]}
YellowGreen

2024/02/22 07:05 編集

var roomId = 'ルームID'; // ★要変更★ 送信先のグループチャットのIDを入力してください に設定されているルームIDが、 APIトークンを作成したアカウントがメンバーになっているグループチャットの ルームIDであるかどうかをご確認ください。
tctctam

2024/02/22 11:36

ありがとうございます! AIPアカウントを作成したアカウントをグループチャットに参加させたところ問題なく機能しました。 前任者が退社してしまい分からないまま任されていた業務だったので丁寧にご教示頂き、本当に助かりました。ベストアンサーに選ばせて頂きたいのでまとめを回答に投稿頂けますと幸いです。
YellowGreen

2024/02/23 02:56

私は、確認方法を提示したまでなので、 質問者様が解決されたのですから、 自己解決としていただければと思います。
guest

回答1

0

自己解決

var options = {
method: 'POST',
headers: {
'X-ChatWorkToken': chatworkToken,
'Content-Type': 'application/x-www-form-urlencoded',
},
payload: {
body: message,
},
muteHttpExceptions: true, // ← この行を追加
};

optionsの内容を追加してフォームの回答が送信されたときの
実行数で「失敗しました」又は「完了」のログの内容を確認。
エラーの内容を確認。

問題のAIPトークンを入力した状態でも「失敗しました」のログは残らず。
しかし該当のチャットルームに投稿はなかった。
トリガーのログには下記のメッセージが記載。
{"errors":["You don't have permission to send/edit message."]}

var roomId = 'ルームID'; // ★要変更★ 送信先のグループチャットのIDを入力してください
に設定されているルームIDが、
APIトークンを作成したアカウントがメンバーになっているグループチャットの
ルームIDであるかどうかを確認。

確認方法、エラーの内容を明確にご教示頂き誠にありがとうございました!

AIPアカウントを作成したアカウントをグループチャットに参加させたところ問題なく機能しました。

投稿2024/02/28 06:28

tctctam

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問