通过Google应用脚本发布 [英] Post through google app scripts
问题描述
我正在尝试从HTML表单发布到Google表格.我目前只是想在Google App脚本中编写代码,但出现错误,提示找不到脚本功能:doGet",我无法弄清楚该怎么做.我的代码如下:
函数myFunction(){var SHEET_NAME ="Sheet1";var SCRIPT_PROP = PropertiesService.getScriptProperties();//新物业服务函数doGet(e){返回handleResponse(e);}函数doPost(e){返回handleResponse(e);}函数handleResponse(e){var lock = LockService.getPublicLock();lock.waitLock(30000);//等待30秒再认输.尝试 {var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));var sheet = doc.getSheetByName(SHEET_NAME);var headRow = e.parameter.header_row ||1;var headers = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];var nextRow = sheet.getLastRow()+ 1;//获取下一行var row = [];//遍历标题列用于(标题中的i){if(headers [i] =="Timestamp"){//特殊情况,如果您包含"Timestamp"列row.push(new Date());} else {//else使用标题名称获取数据row.push(e.parameter [headers [i]]);}}//将值设置为[] []数组比单独设置更有效sheet.getRange(nextRow,1,1,row.length).setValues([row]);//返回json成功结果返回ContentService.createTextOutput(JSON.stringify({"result":"success","row":nextRow})).setMimeType(ContentService.MimeType.JSON);}抓住{e} {//如果错误返回此返回ContentService.createTextOutput(JSON.stringify({"result":"error","error":e})).setMimeType(ContentService.MimeType.JSON);}最后{//释放锁lock.releaseLock();}}函数setup(){var doc = SpreadsheetApp.getActiveSpreadsheet();SCRIPT_PROP.setProperty("key",doc.getId());}}
任何帮助将不胜感激.
您不需要将整个脚本包装在"myFunction()"中,如果您用该函数的相应括号删除该函数,则应该可以正常工作./p>
删除此=>函数myFunction(){-从一开始.
这=>}-从头开始.
I am trying to post from a HTML form to a Google sheet. I am currently just trying to write the code in the Google App script but an error states "Script function not found: doGet" and I cannot figure out what to do. My code is below:
function myFunction() {
var SHEET_NAME = "Sheet1";
var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service
function doGet(e){
return handleResponse(e);
}
function doPost(e){
return handleResponse(e);
}
function handleResponse(e) {
var lock = LockService.getPublicLock();
lock.waitLock(30000); // wait 30 seconds before conceding defeat.
try {
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
var sheet = doc.getSheetByName(SHEET_NAME);
var headRow = e.parameter.header_row || 1;
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var nextRow = sheet.getLastRow()+1; // get next row
var row = [];
// loop through the header columns
for (i in headers){
if (headers[i] == "Timestamp"){ // special case if you include a 'Timestamp' column
row.push(new Date());
} else { // else use header name to get data
row.push(e.parameter[headers[i]]);
}
}
// more efficient to set values as [][] array than individually
sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
// return json success results
return ContentService
.createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
.setMimeType(ContentService.MimeType.JSON);
} catch(e){
// if error return this
return ContentService
.createTextOutput(JSON.stringify({"result":"error", "error": e}))
.setMimeType(ContentService.MimeType.JSON);
} finally { //release lock
lock.releaseLock();
}
}
function setup() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
SCRIPT_PROP.setProperty("key", doc.getId());
}
}
Any help would be much appreciated.
You don't need to wrap the whole script in "myFunction()", if you remove that function with his corresponding bracket it should work just fine.
Remove this => function myFunction() { --from the beginning.
And this => } -- from the end.
这篇关于通过Google应用脚本发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!