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}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。