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

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

新規登録して質問してみよう
ただいま回答率
87.20%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

フォームに入力された情報をDiscordに送信したい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0リアクション

0クリップ

201閲覧

投稿2022/08/14 03:25

実現したいこと

  • フォームに入力された情報をDiscordに送信する

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

フォームを送信してもエラーがでてしまいます

TypeError: Cannot read property '0' of undefined at onSubmit(コード:14:52)

該当のソースコード

流出を防ぐためメッセージを数字に変えています

JavaScript

function onSubmit(e) { const webhookURL = 'WebhookのURL'; let messageBody = ''; //messageBody += `entry\n`; messageBody += `entry:${e.namedValues['タイムスタンプ'][0]}\n`; messageBody += `----------\n`; messageBody += `1\n`; messageBody += `${e.namedValues['1'][0]}\n\n`; messageBody += `2\n`; messageBody += `${e.namedValues['2'][0]}\n\n`; messageBody += `3\n`; messageBody += `${e.namedValues['3'][0]}\n`; messageBody += `4\n`; messageBody += `${e.namedValues['4'][0]}\n\n`; messageBody += `5`; messageBody += `${e.namedValues['5'][0]}\n`; messageBody += `6\n`; messageBody += `${e.namedValues['6'][0]}\n\n`; messageBody += `7\n`; messageBody += `${e.namedValues['7'][0]}\n`; messageBody += `8\n`; messageBody += `${e.namedValues['8'][0]}\n\n`; messageBody += `9\n`; messageBody += `${e.namedValues['9'][0]}\n\n`; messageBody += `10\n`; messageBody += `${e.namedValues['10'][0]}\n\n`; messageBody += `11\n`; messageBody += `${e.namedValues['11'][0]}\n`; messageBody += `12\n`; messageBody += `${e.namedValues['12'][0]}\n\n`; messageBody += `13\n`; messageBody += `${e.namedValues['13'][0]}\n`; messageBody += `----------\n`; const message = { 'content': messageBody, 'tts': false, } const param = { 'method': 'POST', 'headers': { 'Content-type': 'application/json' }, 'payload': JSON.stringify(message) } UrlFetchApp.fetch(webhookURL, param); }

試したこと

[0]の0を1や2に変えてみましたが変わりませんでした。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

cocoalix

2022/08/14 03:44

落ち着いて、まずはエラーメッセージを読んでみてください 英語がわからないのであれば、Google翻訳やDeepLに頼ってみましょう > TypeError: 未定義のプロパティ '0' を読み取れません というように出てくるので、つまり、当該のコードの14行目に於いて、 `e.namedValues['1'][0]` ですかね、このときに `e.namedValues['1']` の中には配列の、少なくとも0のインデックスを持つものは存在しないということがエラーに出力されていることがわかると思います ですので、まずは当該の function の中で `console.log(e)` してみた結果を貼り付けてみていただいてもよろしいでしょうか?
退会済みユーザー

退会済みユーザー

2022/08/14 04:45

実行すると下記のエラーが出てきてしまいます TypeError: Cannot read property 'namedValues' of undefined onSubmit @ コード.gs:9
cocoalix

2022/08/14 04:49

良いですね、一歩前進しました つまり `e` というオブジェクトは、そもそも `namedValues` というプロパティを持っていないことが、これで分かったわけです 実際にどのようにデバッグコード(`console.log(e)`のこと)を差し込まれたかがわからないのですが、 `e` にはどのようなプロパティが含まれているかはお分かりになられますか?
退会済みユーザー

退会済みユーザー

2022/08/14 05:08 編集

初めて触ったので理解できていないのですが、 pythonでいうと def onSubmit(e): ということですか? とすると空…?ですかね…?
cocoalix

2022/08/14 05:13

下記、ちょっと厳しいことを申し上げるのですが、臆することなくどんどん質問してください > pythonでいうと > def onSubmit(e): > ということですか? 何に対する質問なのかがちょっと理解できていないのですが 質問の本文に記載いただいている `function onSubmit(e) { ... }` については、pythonに於ける `def onSubmit(e):` と同じものです つまり、 `onSubmit` という名前の関数は、呼び出し時に `e` という、少なくともひとつの引数を要求している形ですね 多分ご理解いただけていないので、下記にやってほしいことを記述しますね ``` function onSubmit(e) { const webhookURL = 'WebhookのURL'; // : // : UrlFetchApp.fetch(webhookURL, param); } ``` とご記載いただいておりますが、その冒頭部分を次のように変更して実行した場合の出力内容はどのようなものでしょうか? ``` function onSubmit(e) { console.log(e); const webhookURL = 'WebhookのURL'; ```
cocoalix

2022/08/14 05:15

で、もしその結果、「eの中身が空だ」とおっしゃるのでしたら、即ち、 `onSubmit()` を呼び出す際に引数の指定がなされていないものだと考えます
退会済みユーザー

退会済みユーザー

2022/08/14 05:30

理解できていなくてすみません。 同じエラーが出ました TypeError: Cannot read property 'namedValues' of undefined
cocoalix

2022/08/14 05:33

そのエラーメッセージのみしか出力されておりませんでしょうか? 例えば私の方で試した例を示しますが、開発者ツールなどの欄に `undefined` など、何かしら他に表示されておりませんでしょうか? https://ideone.com/ZFP8yX
cocoalix

2022/08/14 05:41

適切にご回答いただきまして、ありがとうございます すばらしい、やはり、おそらく引数が渡されていないことがわかりましたね では、 `onSubmit()` の呼び元で、指定したいデータを引数として渡してあげていただいてもよろしいでしょうか? それでおそらく問題は解決します
退会済みユーザー

退会済みユーザー

2022/08/14 06:44

格闘してたら一時間経っていました笑 遂に遂にできました!! 無知な僕に丁寧に教えてくださってありがとうございました!
cocoalix

2022/08/14 06:49

はい、よかったです! 解決したのでしたら、下記回答をBAにご指定いただければと思います また、今後のソフトウェア開発に於いては、よろしければ次のことを意識してみてください 1. 標準出力(stdout)や標準エラー出力(stderr)、あるいはブラウザの開発者ツールのコンソール部に表示される、通常の出力やエラー出力をよく読んでみてください 2. エラー出力が発生した際は、エラーの内容をよく読んでください、また、英語がわからない場合は翻訳ツールを使用してみてください 3. エラーを読んでもわからない場合は、そのエラーメッセージでGoogle検索をしてみてください 4. C/C++やIDEが使用できる環境でしたら、gdbなどのデバッグツールやブレークポイントを貼るなどをして、実行している状態を追ってみてください。また、デバッグツールが使用できない場合も「printfデバッグ」と言って、今回やったような、とりあえず出力にデータの状態を表示してみるデバッグ手法が非常に有効です discordBOTの作成、頑張ってくださいね

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。