1

我正在尝试使用 Google 应用程序脚本从表单中获取信息,但我认为检查并查看表单是否已经附加了目标电子表格是一个好主意。如果是,我想获取 ID,如果不是,我想创建一个。每次我运行下面的代码时,调试器都会抛出一个错误,告诉我“表单当前没有响应目标”。

请帮忙

    var form = FormApp.getActiveForm();
    var formName = form.getTitle();


    function randomQuestion() {
      var theFormID = form.getId();

      var sheetID = function sheetID() {

      if ( form.getDestinationId() === 'undefined' ) {
          var ss = SpreadsheetApp.create(formName + ' (Responses)');
          form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
          return form.getDestinationId();

      }else {
       return form.getDestinationId();}

      }
    var sheet = sheetID();
    g;  // <-un-comment this to make the de-bugger throw an error =)
    }
4

2 回答 2

3

这是我用来测试是否有响应电子表格的代码,如果没有则创建一个。

    var form = FormApp.getActiveForm();
    var formName = form.getTitle();
    var ssID;

    try {
      ssID = form.getDestinationId();
    }
    catch(e) {
      var exception = e.name;
      if (exception === "Exception" ){
        var ss = SpreadsheetApp.create(formName + ' (Responses)');
        form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
        ssID = form.getDestinationId();
      }else{
        ssID = form.getDestinationId();
      }
    }
于 2013-09-30T18:23:42.137 回答
2

当表单没有响应目标时,该方法getDestinationId()会引发异常。您需要使用try...catch来处理此问题,例如:

...
var form = FormApp.getActiveForm(), idResponse;
try {
  idResponse = form.getDestinationId();
}
catch(e) {
  // TODO
}
...
于 2013-09-05T18:53:23.267 回答