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

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

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

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

Q&A

解決済

1回答

13723閲覧

GASでHTMLファイルの内容がスプレッドシートに送れない

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿2016/07/27 04:21

プログラミング初心者です。
初めて投稿させていただきます。
現在Apps scriptを使ってHTMLファイルから入力された情報をスプレッドシートに書き込むというプログラムを作っているのですがうまくいきません。

function doGet() { var html = HtmlService.createTemplateFromFile('report'); return html.evaluate(); } function myFunction(form) { var id = "-----------------------"; var spreadSheet = SpreadsheetApp.openById(id); var sheet = spreadSheet.getSheetByName("report"); var range = sheet.getRange(2, 1); range.setValue(form.salesPerson); var range = sheet.getRange(2, 2); range.setValue(form.infoDetail); }

report.html

1<body> 2 <h1>営業レポート入力フォーム</h1> 3 <form> 4 <table> 5 <tbody> 6 <tr> 7 <th>担当者</th> 8 <td> 9 <input type="text" name="salesPerson"> 10 </td> 11 </tr> 12 <tr> 13 <th>詳細情報</th> 14 <td> 15 <textarea name="infoDetail"></textarea> 16 </td> 17 </tr> 18 </tbody> 19 </table><!-- end table --> 20 <input type="button" name="btn" onclick="google.script.run.withSuccessHandler(update).myFunction(this.parentNode);" value="登録する"> 21 </form> 22</body>

上のdoGetとmyFunctionが.gsのプログラムでしたがreport.htmlのプログラムです。
htmlから送信しようとしてもスプレッドシートに記入されないのですがどこが間違っているのか教えていただけないでしょうか。

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

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

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

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

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

harashow1701

2016/07/27 04:29

エラーメッセージがあればそれを追記。あと、どこが間違ってるの前にどこまでは上手く行ってるかを追記。
guest

回答1

0

ベストアンサー

GASサイト
上記サイトのFormsを参考に試してみたらうまくいきました。念のための確認ですが、独立したスクリプトファイルに記述しています(スプレッドシート付属のスクリプトファイルではなく)。あと、コードを変更したらバージョンを上げないと(新規にしないと)うまく反映されないです。私も詳しくないですがとりあえずうまくいったので回答しておきます。

html

1コード.gs 2function doGet() { 3 var html = HtmlService.createTemplateFromFile('report'); 4 return html.evaluate(); 5} 6 7function processForm(formObject) { 8 var val1 = formObject.salesPerson; 9 var val2 = formObject.infoDetail 10 var ss = SpreadsheetApp.openById("スプレッドシートキー"); 11 var sh = ss.getSheetByName("report"); 12 sh.getRange(2,1).setValue(val1); 13 sh.getRange(2,2).setValue(val2); 14}

html

1report.html 2<!DOCTYPE html> 3<html> 4 <head> 5 <base target="_top"> 6 <script> 7 function preventFormSubmit() { 8 var forms = document.querySelectorAll('form'); 9 for (var i = 0; i < forms.length; i++) { 10 forms[i].addEventListener('submit', function(event) { 11 event.preventDefault(); 12 }); 13 } 14 } 15 window.addEventListener('load', preventFormSubmit); 16 17 function handleFormSubmit(formObject) { 18 google.script.run.withSuccessHandler().processForm(formObject); 19 } 20 21 </script> 22 </head> 23<body> 24<body> 25 <h1>営業レポート入力フォーム</h1> 26 <form onsubmit="handleFormSubmit(this)"> 27 <table> 28 <tbody> 29 <tr> 30 <th>担当者</th> 31 <td> 32 <input type="text" name="salesPerson"> 33 </td> 34 </tr> 35 <tr> 36 <th>詳細情報</th> 37 <td> 38 <textarea name="infoDetail"></textarea> 39 </td> 40 </tr> 41 </tbody> 42 </table><!-- end table --> 43 <input type="submit" value="登録する"> 44 </form> 45</body></body> 46</html>

投稿2016/07/31 15:13

true

総合スコア440

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問