从电子表格绑定表单中获取表单 URL

Mal*_*lcL 1 google-apps-script google-forms

在电子表格脚本中,我想向用户发送邮件,这些邮件会将他们指向允许他们输入数据的表单的 URL。我试过了:

function test1(){

  var formID = FormApp.getActiveForm();
  var formUrl = DriveApp.getUrl(formID);
  sendMail(formUrl);
  return
}
Run Code Online (Sandbox Code Playgroud)

这将失败,因为 formID 的值始终为 NULL。

小智 5

如果有一个表单链接到电子表格

var ss = SpreadsheetApp.getActiveSpreadsheet(); // or openById, etc
var formUrl = ss.getFormUrl();
Run Code Online (Sandbox Code Playgroud)

获取它的网址。如果需要,FormApp.openByUrl(formUrl);返回一个指向表单的指针,它允许任何其他方法。

链接到电子表格的多个表单

没有内置方法可以返回链接到给定电子表格的表单列表;这是Apps Script 问题跟踪器中的一个未解决的问题。一种解决方法是搜索所有表单(就像 Cyrus Loree 所做的那样),获取每个表单的目的地,然后返回目的地是感兴趣的电子表格的表单的列表。这是如何:

function linkedForms() {
  var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
  var formList = [];
  var files = DriveApp.getFilesByType(MimeType.GOOGLE_FORMS);
  while (files.hasNext()) {
    var form = FormApp.openByUrl(files.next().getUrl());
    try {
      if (form.getDestinationId() == ssId) {
        formList.push(form.getPublishedUrl());
      }
    }
    catch(e) {
    }
  }
  return formList;
}
Run Code Online (Sandbox Code Playgroud)

评论:

  • 我放入form.getDestinationId()了一个 try 块,因为此方法会引发错误表单的目标电子表格恰好被删除(而不是仅返回null
  • 要获取表单 Id 列表而不是 Urls,请form.getId()在函数中使用。