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

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

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

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

JavaScript

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

Q&A

解決済

3回答

12216閲覧

TypeError: undefined からプロパティ「postData」を読み取るための解決策

YukiOki

総合スコア29

Google Apps Script

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

JavaScript

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

0グッド

0クリップ

投稿2019/03/29 07:36

const lineJson = JSON.parse(e.postData.contents);
この部分のコードのpostDataの読み取りをするにはどのようにすれば良いかアドバイスをいただきたいです。
よろしくお願いいたします。

言語:Java Script
環境:Goole Apps Script

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

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

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

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

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

maisumakun

2019/03/29 08:30

あまりに情報が少なすぎます。「e」が何者なのかもわかりません。
Lhankor_Mhy

2019/03/29 09:08

e.postData とすればいいような気がしますが、そういう話ではなく? といいますか、 TypeError: undefined っていうのは、何の関係があるんです?
_Victorique__

2019/03/29 09:26

undefined of contentsというエラーだったんじゃないんですか?
t_obara

2019/03/29 09:41

GASでPostを受け取るための設定についてもご提示されるとよろしいかと思います。
guest

回答3

0

ベストアンサー

google app scriptあるあるだと思うので回答しておきます。
(ラインのボットを作ろうとしているんだろうなーという想像です(変数名とe.postData.contentsの形式などから))

そのエラーは、トリガーが発動していないことを意味します。掲示の例では、postされてないことを意味しています。「関数の実行」をしたのだと推測します。
と言っても伝わりにくいと思うので、動作させるために必要な手順を書きます。どこまでやっているかにあわせて、続きの作業をしてください。

  1. スクリプトを実行可能なwebアプリケーションとして公開とする
  2. ↑で取得したアドレスをラインの設定で、ボットの応答アドレスとして設定する
  3. ラインでそのボットに対して、メッセージを投げる

とすることで、eをundefinedでなくすることができます。

これ以上の説明はしないので、あくまで知っていたら、ですが、他の方法として。
上記1.さえできていれば、簡易にはpostmanなどで動作させられますし、なんならcurlでpostしてもいいです。

なお、このように実際にpostをした場合、今ごらんのスクリプトエディタでのデバッガやLoggerは使えないので、スクリプトが正しくかけていない場合、なぜ応答しないのか分からない、みたいな事態に容易に陥ります。
なので、一般的には、e.postDataにどういうデータが入るかをLine APIの仕様から自分で生成するモックをかませて、テストできる状態を作るのだろうと思います。

投稿2019/03/30 16:05

編集2019/03/31 04:32
papinianus

総合スコア12705

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

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

YukiOki

2019/04/01 01:45

アドバイスいただきまして、ありがとうございます!
guest

0

的外れの可能性高いですが、私は以下の状況でした。

GASを使ってlineの自動返信botを作ろうとして、
コードをコピペしたところ以下のエラーが出てましたが、
実装時に問題は起こりませんでした。

・const json = JSON.parse(e.postData.contents);
GAS上で「実行」押下時に、上記コードに対して以下のエラーが発生。
・TypeError: Cannot read properties of undefined (reading 'postData')
→特に対処せず実装したら普通に動いた

ど初心者なので全然理解していませんが、おそらく
・lineへ何か投稿があったときに動くコード
・GAS上で実行すると何も投稿が無いのに強制起動
・「投稿内容見つからないが?」というエラー

有識者からすると想像を絶するところで躓いていたと思います。
誰かの参考になれば。

投稿2023/04/07 02:32

IK08_08

総合スコア16

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

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

0

解決方法が理解できなかったため、0からコードを書き直します。

投稿2019/04/01 01:45

YukiOki

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問