我对编写脚本比较陌生,所以请善待。
我正在尝试创建一个绑定到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
答案 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.");
}