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

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

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

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

Q&A

解決済

1回答

808閲覧

google apps scriptのエラーについて

reverse2150

総合スコア16

Google Apps Script

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

0グッド

0クリップ

投稿2019/05/15 22:08

webアプリからgoogleスプレッドシートへアクセスして、doPost関数からデータを追加したい

タイトルの通り、webアプリからgoogleスプレッドシートへアクセスして、doPost関数からデータを追加したく、参考書のプログラムを基に以下のプログラムを書いたのですがエラーが表示されうまくいきません。このエラー内容が出てしまう理由を教えてください。

また、html文の中のformタグのactionに入れるIDは、WebアプリのIDをと参考書には書いてあったのですがあってますでしょうか。

よろしくお願いします。

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

TypeError: undefined からプロパティ「parameter」を読み取れません。(行 15、ファイル「コード」)

該当のソースコード

function doGet(e) { var app = SpreadsheetApp.openById('(スプレッドシートのID)'); var sheet = app.getSheetByName('投稿'); var range = sheet.getDataRange(); var temp = HtmlService.createTemplateFromFile('index'); temp.title ='こんにちは!'; temp.msg = '入力してください!'; temp.values = range.getValues(); return temp.evaluate(); } function doPost(e) { var name = e.parameter['name']; var post = e.parameter['post']; var data = [[name,post]]; var app = SpreadsheetApp.openById('(スプレッドシートのID)'); var sheet = app.getSheetByName('投稿'); var row = sheet.getDataRange().getLastRow(); var r = sheet.getRange(row + 1, 1, 1, 2); r.setValue(data); var range = sheet.getDataRange(); var name = e.parameter.name; var post = e.parameter.post; var data = [[name,post]]; var temp = HtmlService.createTemplateFromFile('index'); temp.title ='テスト'; temp.msg = 'データ追加完了!'; temp.values = range.getValues(); return temp.evaluate(); }

html

1<!DOCTYPE html> 2<html> 3<head> 4<base target="_top"> 5<title>hello!</title> 6</head> 7<body> 8 <style> 9 h1{font-size:80pt; font-weight:bold; text-align:right; 10 color:#f0f0f0; margin:-30px 0px;} 11 </style> 12 13<h1><?=title ?></h1> 14 <p>これはhtml文です。</p> 15 <p><?=msg ?></p> 16 <form action="https://script.google.com/macros/s/(WebアプリのID)/exec" 17 method="post"> 18 名前:<input type="text" id="name" name="name"><br> 19 投稿:<input type="text" id="post" name="post"><br> 20 <input type="submit"> 21 </form> 22 <hr> 23 <table> 24 <? for(var n in values) { 25 var line = values[n]; ?> 26 <tr> 27 <? for(var m in line) { 28 var item = line[m]; 29 if(n == 0 || m == 0) { ?> 30 <th><?=item ?></th> 31 <? } else { ?> 32 <td><?=item ?></td> 33 <? } ?> 34 <? } ?> 35 <? } ?> 36</table> 37</body> 38</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

関数の実行をしているからです。

doPostの確認をするにはウェブアプリとして公開し、フォームを送信するしかないです。

html文の中のformタグのactionに入れるIDは、WebアプリのIDをと参考書には書いてあったのですがあってますでしょうか。

ウェブアプリとして公開するときにURLが提示されます。

投稿2019/05/15 22:24

編集2019/05/15 22:27
papinianus

総合スコア12705

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

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

reverse2150

2019/05/15 22:28

なるほど!理解できました!回答くださって本当にありがとうございます、助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問