実現したいこと
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を取得できていないというところまでは理解したのですが、トークンの変更しかしていないためどうすればよいか分かりません。
補足
特になし
スクリプトエディタから、実行した時のエラーですね。フォームからの送信が無いからです。
フォームを送信した時に今までどおりでしたら、それが通常の動作です。
コメントありがとうございます。
フォームからの送信も失敗しており、トリガーの実行履歴に失敗した履歴が残っている状態なのですがこれは何が原因か分かりません。(いずれもAPIトークンを変更したのみで起こっているエラーです)
このスクリプトを作成したのが自分ではないため、再度承認要求をされたので承認したのですが
それによってフォームとスクリプトの連携が切れているとかなのでしょうか…?
試しに元のAPIトークンに戻すと通常通り作動しました。
これは変更したAPIトークンに問題があるという事だと思うのですが、何が悪いのかが見当もつかず困っています…。
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アカウントを作成したアカウントをグループチャットに参加させたところ問題なく機能しました。
前任者が退社してしまい分からないまま任されていた業務だったので丁寧にご教示頂き、本当に助かりました。ベストアンサーに選ばせて頂きたいのでまとめを回答に投稿頂けますと幸いです。
私は、確認方法を提示したまでなので、
質問者様が解決されたのですから、
自己解決としていただければと思います。
回答1件
あなたの回答
tips
プレビュー