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

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

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

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

JavaScript

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

Q&A

1回答

3960閲覧

Google Apps Script (GAS) で作成したフォームで、位置情報を取得&スプレットシートへ登録する方法

asako-

総合スコア21

Google Apps Script

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

JavaScript

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

0グッド

1クリップ

投稿2019/06/30 16:48

編集2019/06/30 16:49

GASで作成したフォームで位置情報を取得し、スプレッドシートにフォームで取得した項目と位置情報を自動登録させるものを作成したく検索していたところ、ちょうどこちらのサイトの以下ページを見つけました。
https://teratail.com/questions/116806

上記ページのコードを参考に色々試しておりますが、位置情報をスプレットシートへ登録する方法が分かりません…。
お助けいただければ幸いです。

現在のコードは以下の通りです。

↓report.html

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <script> 6 function preventFormSubmit() { 7 var forms = document.querySelectorAll('form'); 8 for (var i = 0; i < forms.length; i++) { 9 forms[i].addEventListener('submit', function(event) { 10 event.preventDefault(); 11 }); 12 } 13 } 14 window.addEventListener('load', preventFormSubmit); 15 16 function handleFormSubmit(formObject) { 17 google.script.run.withSuccessHandler().processForm(formObject); 18 } 19 20 // 現在地取得処理 21 function getPosition() { 22 // 現在地を取得 23 navigator.geolocation.getCurrentPosition( 24      function(position) { 25 var ido = position.coords.latitude; 26 var keido =position.coords.longitude; 27 google.script.run.withSuccessHandler().position(ido,keido); 28 } 29 ); 30 } 31 </script> 32 33</head> 34<body> 35<div class="container"> 36 <form onsubmit="handleFormSubmit(this)"> 37 <table align="center" class="teble1"> 38 <tbody> 39 40 <tr> 41 <th>項目1</th> 42 <td> 43 <input type="text" name="i1"> 44 </td> 45 </tr> 46 47 <tr> 48 <th>項目2</th> 49 <td> 50 <input type="text" name="i2"> 51 </td> 52 </tr> 53 54 </table><!-- end table --> 55 <input type="submit" value="送信"> 56 </form> 57 </div> 58</body> 59</html>

↓コード.gs

gs

1function doGet() { 2 var html = HtmlService.createTemplateFromFile('report'); 3 return html.evaluate(); 4} 5 6function processForm(formObject) { 7 'フォーム内のデータ' 8 var val1 = formObject.i1; //項目1 9 var val2 = formObject.i2; //項目2 10 11 12 var ss = SpreadsheetApp.openById("**********"); 13 var sh = ss.getSheetByName("シート1"); 14 15 'Row/Column' 16 var lastRow = sh.getLastRow(); 17 var lastColumn = sh.getLastColumn(); 18 19 var now = new Date(); 20 sh.getRange(lastRow+1,1).setValue(Utilities.formatDate(now, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss')); 21 sh.getRange(lastRow+1,2).setValue(val1); 22 sh.getRange(lastRow+1,3).setValue(val2); 23}

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

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

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

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

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

guest

回答1

0

前の質問の意図がわからないのですが、getPositionをそのようにformと別に実行する仕組みでは、項目1項目2と同じ行には出力できません。

ページ読み込み時点で実行して、コールバック内でフォームの項目として設定(submitをenableにする)、書き込みはprocessFormで一緒に書く、が適切ではないですか?

投稿2019/06/30 21:13

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問