通过Google应用脚本发布 [英] Post through google app scripts

查看:65
本文介绍了通过Google应用脚本发布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆