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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4668閲覧

PHPのデータの受け取りのGASのe.parameterのエラーについて

damaa

総合スコア20

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/01/08 04:55

###前提・実現したいこと
外部phpからGASのdoget で受け取り、スプレッドシートに記述する際のデータ取得でのエラーについてお尋ねしたいです。

###該当のソースコード

<?php $data ='bbb'; echo "<form action = 'xxxxxxxx' method = 'GET'>"; echo "お名前<INPUT TYPE = 'text' NAME = 'name' value = '".$data."'><BR>"; } echo "<input type = 'submit' value ='送信'>"; ?>
function doGet(e){ var id = SpreadsheetApp.getActiveSpreadsheet().getId(); var spreadSheet = SpreadsheetApp.openById(id); var spreadsheetObj = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheetObj.getSheetByName("aaa"); //データ取得 var name = e.parameter.name;

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

undefined からプロパティ「parameter」を読み取れません。

どこかにparameterの定義等をしないといけないのでしょうか?

どなたか知識のある方ご教授下さい。

稚拙な文章で申し訳ないです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらくそのundefinedはそもそもphpからの送信をうまく受け取ることができていないと思われます。
イメージとしては

受け取れていない => 受け取り用の引数eに何も入っていない => undefinedになる

といった流れです。
送信先があっているのか、サーバサイドなどの処理が間違っていないかを確認するのが良いかもですね!

投稿2018/01/08 06:13

SuguruOhki

総合スコア96

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

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

damaa

2018/01/08 06:28

親切なご回答ありがとうございます! 無事解決しスプレッドシートに書き込めました! $data ='bbb';といった値が1つの時はいけたのですが、 値が複数ある以下のような時に for($i=0; $i<3; $i++){ echo "お名前<INPUT TYPE = 'text' NAME = 'name[]' value = '".$data1[$i]."'><BR>"; } とformで送信し、 var name = e.parameter.name[0]; で受け取った場合、 undefined からプロパティ「0」を読み取れません。 となります、、 こちらの原因も何かわかるでしょうか?? 重ね重ね申し訳ないです。
SuguruOhki

2018/01/08 06:49

そもそも送信の時の認識が違っている気がしています。 postされるときには連想配列という形のobjectでデータが$_POSTという変数に持たされています。 これはformの「name」の値をkey, keyで取り出す値が「value」として保存されているので、nameの指定が間違いかなと。 ``` name[] => name[$i] ``` と直すとkeyがname[0], name[1], name[2],... となるはずなのでうまくいくのでは。。。
damaa

2018/01/08 07:26

ご回答ありがとうございます! echo "お名前<INPUT TYPE = 'text' NAME = 'name[".$i."]' value = '".$data1[$i]."'>"; としてみたのですが、、、まだ undefined からプロパティ「0」を読み取れません。 が出てしまいます、、、
SuguruOhki

2018/01/08 09:25

eの中身をまず見てみないと進みませんね!そうなったときはまずは中身を確認することが先決です。 ``` console.dir(e); ``` をgoogle apps script 側のdoGetに上記を追加してeのobjectの中身を確認しましょう! うまく渡せていれば、中身が出てくるのであとはそれに合わせてnameを入れるだけです。 もしundefinedになっているのであれば、そもそもうまく送信できていないのでもう一度サーバ側を見ましょう。
damaa

2018/01/09 01:58

ご回答ありがとうございます! オブジェクト console で関数 dir が見つかりません。 となります、、、 うまく渡せてないように思います、、、 コードはこれだけで <?php echo "<form action = 'xxxxxxxxx' method = 'get'>"; for($i=0; $i<3; $i++){ $data1 =array('山田','鈴木','田中'); echo "お名前<INPUT TYPE = 'text' NAME = 'name[".$i."]' value = '".$data1[$i]."'>"; } echo "<input type = 'submit' value ='送信'>"; echo "</form>"; ?> アドレスも確認しましたが、、、 パラメーターではうまく渡せているのを確認できています、、、 お手数おかけして申し訳ないです、、、
damaa

2018/01/09 13:16

解決しました!ありがとうございました!
SuguruOhki

2018/01/12 11:19

返信遅れまして申し訳ないです! 解決したならよかったです! お疲れ様でした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問