在doGet(e)函数中调用FormApp

时间:2015-06-04 13:05:24

标签: google-apps-script google-form

我对编写脚本比较陌生,所以请善待。

我正在尝试创建一个绑定到Google Apps中的表单的函数,包括一个捕获3个变量(requestNum,approverNum和status)的webapp,并从FormApp获取各种其他信息(例如标题,响应等)。

我收到了 - TypeError:无法在下面代码的第3行调用方法“getId”null (绑定到Form)。

非常感谢能够从doGet函数中调用表单信息的任何指导!谢谢。

  function doGet(e){
  var form = FormApp.getActiveForm();
  var formId = form.getId();
  var items = form.getItems();
  var d = new Date();
  var formattedDate = Utilities.formatDate(d, "GMT+11", "MMM dd yyyy");
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);

  var stmt = conn.prepareStatement('INSERT INTO approvals '
      + '(formId, requestNum, approverNum, status, date) values (?, ?, ?, ?, ?)');
  stmt.setString(1, formId);
  stmt.setString(2, e.parameter.requestNum);
  stmt.setString(3, e.parameter.approverNum);
  stmt.setString(4, e.parameter.status);
  stmt.setString(5, d);
  stmt.execute();

  var nextApproverNum = e.parameter.approverNum + 1;
  var answer = e.parameter.status;
  var requestNum = e.parameter.requestNum;
  var nextApproverEmail = e.parameter.reply;

  var titles = [];
  for (i=0; i<items.length; i++) {
  titles.push(items[i].getTitle());
  }

  var responses = [];
  var formResponses = form.getResponses();
  var itemResponses = formResponses[requestNum-1].getItemResponses();
    for (var j = 0; j < itemResponses.length; j++) {
    responses.push(itemResponses[j].getResponse());
  }
  ....etc

1 个答案:

答案 0 :(得分:0)

在适当的访问条件下,您遇到问题的代码有效。您应该查看用于发布为Web应用程序的设置。

此代码段仅关注您提出的问题,并且按预期工作:

function doGet(e){
//  var form = FormApp.getActiveForm(); // TypeError: Cannot call method "getId" of null.
  var form = FormApp.openById('17lTBrLmQxggVADlnPC6DgTZf1f2sCEA1Rc9ZIpBu_uQ');
  var formId = form.getId();
  var items = form.getItems();
  return ContentService.createTextOutput("Form contains "+items.length+"items.");
}

deploy