Google apps script 简单的谷歌应用程序工作流表单->;电子表格->;电子邮件管理器->;更新电子表格&;请求者

Google apps script 简单的谷歌应用程序工作流表单->;电子表格->;电子邮件管理器->;更新电子表格&;请求者,google-apps-script,workflow,Google Apps Script,Workflow,我已经创建了一个表单,可以写入电子表格。 应用程序脚本在Submit上运行,查找新数据并向经理发送电子邮件 经理收到带有“批准”按钮的电子邮件 我无法将审批人的回复发回电子表格 当审批人选择按钮时,会显示消息“未找到脚本函数:doPost” var列_状态=4//数字是第#+16列=第G列(第7列) 变量列_APROVE=5 var STATE_APPROVED=“APPROVED”; var STATE_REJECTED=“REJECTED”; var STATE\u MANAGER\u EM

我已经创建了一个表单,可以写入电子表格。 应用程序脚本在Submit上运行,查找新数据并向经理发送电子邮件 经理收到带有“批准”按钮的电子邮件

我无法将审批人的回复发回电子表格

当审批人选择按钮时,会显示消息“未找到脚本函数:doPost”

var列_状态=4//数字是第#+16列=第G列(第7列)
变量列_APROVE=5
var STATE_APPROVED=“APPROVED”;
var STATE_REJECTED=“REJECTED”;
var STATE\u MANAGER\u EMAIL=“MANAGER\u EMAIL”;
var请求_电子表格_ID=“0AKBHPYORSG2DDJPAWD1BGEZB19HY2PJVHDIQUHXNUE”;
//主要教程功能:针对每行
//-如果最近被经理批准或拒绝,请将结果通过电子邮件发送至
函数onRequest(){
//这是请求电子表格
var ss=电子表格应用程序.openById(请求电子表格ID);
var sheet=ss.getSheets()[0];
//从请求电子表格中获取所有数据
//使用JavaScript对象读取电子表格数据时重用了getRowsData
var数据=getRowsData(表);
//每一个要求
对于(变量i=0;i”+”请求Id:“+row.rowNumber+”

“+ “

”+row.username+“已请求您批准休假。”+“

”+ ' ' + '' + ''; //(Logger.log(row)); MailApp.sendmail(行.监督电子邮件,主题,“,{htmlBody:message}); row.state=状态\管理者\电子邮件; } 函数doPost(e){ var template=HtmlService.createTemplateFromFile('Thank.html'); template.name=e.parameter.name; template.comment=e.parameter.comment; template.screenshot=e.parameter.screenshot; 返回模板evaluate(); (Logger.log(e)); }
发布对话框中应提供
action=“xxxx”
中的URL。它将以
/exec
结束。您需要将其作为一个webapp,它将为您提供一个URL,并确保您的
doPost()
方法在那里被调用。

我已经发布了脚本,并将URL包含在我的代码中。“XXXX”只是Https://…的一个占位符。您是否创建了新版本#并在添加doPost后重新发布您的脚本?我已经复制了你的脚本,添加了一个html模板,并发布了-这对我来说很有效,所以这可能是一个像这样的简单问题。加载帖子页面需要19秒。我能做些什么来加快确认速度吗?我正在用最短的
谢谢.html
进行测试,大约需要3秒钟。因此,这降低了webapp显示的基本原理成为瓶颈的可能性。你需要看看你手术后的其他部分在做什么。在编辑器对doPost打开的情况下,从gmail执行确认,然后查看执行记录并查看执行的每个操作的时间戳。这会让你看到慢的部分。(我的最小版本的总执行时间为0.028s,因此caja+基础设施的开销约为3s。)
var COLUMN_STATE = 4; //the number is the column # + 1  6 = column G (7th column)
var COLUMN_APROVE = 5
var STATE_APPROVED = "APPROVED";
var STATE_REJECTED = "REJECTED";
var STATE_MANAGER_EMAIL = "MANAGER_EMAIL";

var REQUEST_SPREADSHEET_ID = "0AkbHPyoRSG2DdDJpaWd1bGEzb19HY2pjVHdiQUhxNUE";

// Main tutorial function: For each row
//   - if it has recently been APPROVED or REJECTED by a manager, email the results to 

function onRequest() {
  // This is the Request Spreadsheet
  var ss = SpreadsheetApp.openById(REQUEST_SPREADSHEET_ID);
  var sheet = ss.getSheets()[0];

  // Fetch all the data from the Request Spreadsheet
  // getRowsData was reused from Reading Spreadsheet Data using JavaScript Objects 
  var data = getRowsData(sheet);

  // For every Request
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    row.rowNumber = i + 2;
    if (!row.state) {
      // This is a new Request
      // Email the manager to request for approval.
      sendReportToManager(row);// Update the state of the Request
      sheet.getRange(row.rowNumber, COLUMN_STATE).setValue(row.state);
    } 
   }
  }


// Sends an email to a manager to request approval 
function sendReportToManager(row) {
  var subject = "ID#" + " " + row.rowNumber + " "+"Request for Time Off"
  var message ='<form action="xxxx" method="Post">' +
      "<P>" + "Request Id: " + row.rowNumber + "</P>"+ 
      "<P>" + row.username + " has requested your approval for Time Off." + "</P>"+ 
      '<input type="hidden" name="row" value="' + row.rowNumber +'" /> ' +
      '<input type="submit" value="Submit" />' +
      '</form>';
      //(Logger.log(row));
  MailApp.sendEmail(row.supervisorsEmail,subject, "", {htmlBody: message});
  row.state = STATE_MANAGER_EMAIL;
}

function doPost(e) {
  var template = HtmlService.createTemplateFromFile('Thanks.html');
  template.name = e.parameter.name;
  template.comment = e.parameter.comment;
  template.screenshot = e.parameter.screenshot;
  return template.evaluate();
  (Logger.log(e));
}