将自己的本地HTML表单提交到Google电子表格-数据未提交到电子表格

时间:2019-01-29 12:32:50

标签: javascript jquery html

我正在尝试做一个提交表单的项目,它将数据打印到Google电子表格,然后从那里将数据推送到Google日历应用程序,同时将数据划分给某些人。

这是我的本地HTML代码:

 <form name="submit-to-google-sheet">   
 <input name="email" type="email" placeholder="Email address" id="email" required> 
  <input name="firstName" type="text" id="firstName" placeholder="First Name">  
  <input name="lastName" type="text" id="lastName" placeholder="Last Name">  
  <button type="submit" id="submit">Send</button>  
 </form>  
 <script> 
function doGet(){ 
  var SpreadsheetApp = SpreadsheetApp.openByURL('https://docs.google.com/spreadsheets/d/1PlwbKj34vqWWap9yXYio2m1oYHx_ciU3z_yTzerfZhw/edit?usp=sharing');
  const scriptURL = 'https://script.google.com/a/kyme.fi/macros/s/AKfycbzTHsrpAT-oqDAp1rDPg1UsdHBqhKBEYs8nmYekGg/exec'  
  const form = document.forms['index.html'] 
  var element = document.getElementById('submit');
  element.addEventListener('submit', e => {  
   e.preventDefault()  
   fetch(scriptURL, { method: 'POST', body: new FormData(form)})  
    .then(response => console.log('Success!', response))  
    .catch(error => console.error('Error!', error.message))
	
  })  
 }
 </script>  

以及我的Google Spreadsheet Javascript脚本:

function doGet() {
var sheetName = 'Sheet1'  
var scriptProp = PropertiesService.getScriptProperties() 
 
 function intialSetup () {  
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  var SpreadsheetApp = SpreadsheetApp.openById('1PlwbKj34vqWWap9yXYio2m1oYHx_ciU3z_yTzerfZhw');
  scriptProp.setProperty('key', activeSpreadsheet.getId())
 }

 function doPost (e) {  
  if (e === undefined) {
    e = 0;
    }
  
  var lock = LockService.getScriptLock()  
  lock.tryLock(10000)  
  try {  
   var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))  
   var sheet = doc.getSheetByName(sheetName)
   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]  
   var nextRow = sheet.getLastRow() + 1     
   
  sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])  
   return ContentService  
    .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))  
    .setMimeType(ContentService.MimeType.JSON)  
  }  
  catch (e) {  
   return ContentService  
    .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))  
    .setMimeType(ContentService.MimeType.JSON)  
  }  
  finally {  
   lock.releaseLock()  
  }
 }

function setRowsData(sheet, objects, optHeadersRange, optFirstDataRowIndex) {
  var headersRange = optHeadersRange || sheet.getRange(1, 1, 1, sheet.getMaxColumns());
  var firstDataRowIndex = optFirstDataRowIndex || headersRange.getRowIndex() + 1;
  var headers = normalizeHeaders(headersRange.getValues()[0]);
  
  var email = document.getElementById('email').value.indexOf("@")[1];
  var firstName = document.getElementById('firstName').value()[1];
  var lastName = document.getElementById('lastName').value()[1];
  
   
   var data = [];
   for (var i = 0; i < objects.length; ++i) {
     var values = []
     for (j = 0; j < headers.length; ++j) {
       var header = headers[j];
       values.push(header.length > 0 && objects[i][header] ? objects[i][header] : "");
       values = ('prop' in objects) ? objects.prop : defaultValue
    }
    data.push(values);
   }
   var destinationRange = sheet.getRange(firstDataRowIndex, headersRange.getColumnIndex(),
                                         objects.length, headers.length);
   destinationRange.setValues(data);
   
   return values;
   }
 }
 

我找不到任何错误,但仍然无法打印到电子表格中。我已经设置了触发器,所以这不是问题,而且我的电子表格也向所有人开放,所以这也不是问题。

0 个答案:

没有答案
相关问题