如何使用谷歌应用脚​​本获取链接到工作表的表单?

时间:2015-02-22 06:16:26

标签: google-apps-script

在课程Spreadsheet中,getFormUrl()会返回附加到电子表格的表单的网址,如果没有表单,则返回null。

但是现在您可以在每张表格上附上表格,如何获得附在指定表格上的表格的ID或网址?

4 个答案:

答案 0 :(得分:1)

我刚刚获取了getFormUrl提供的URL,并将字母49到93分配给了一个字符串。那应该提供表格ID。

var ss=SpreadsheetApp.getActiveSpreadsheet();
var fOrmUrl=ss.getFormUrl();
var sTring="";
for (var i=49; i<93; i++)
{
  sTring=sTring + fOrmUrl[i];
}

答案 1 :(得分:0)

我注意到,sheet.getFormURL()方法并不总是返回与form.getPublishedUrl()返回的URL相同的URL。这两个URL均有效。为了解决该问题,我打开工作表的formUrl,然后检查并比较该表单的ID:

var form = FormApp.getActiveForm();
var formId = form.getId();
const matches = spreadSheet.getSheets().filter(function (sheet) {
  var sheetFormUrl = sheet.getFormUrl();
  if (sheetFormUrl){
    return FormApp.openByUrl(sheetFormUrl).getId() === formId;
  }
});
const sheet = matches[0]

答案 2 :(得分:0)

您可以在电子表格以及电子表格的每个工作表上调用getSheetUrl:

let ss = SpreadsheetApp.getActiveSpreadsheet();

for (let sheet of sheets) {
    let sheetName = sheet.getName();
    let formUrl = sheet.getFormUrl();
    Logger.log("formUrl1 %s %s", sheetName, formUrl);
    if (formUrl) {
      Logger.log("formid1 %s", FormApp.openByUrl(formUrl).getId());
    }
}

let formUrl = ss.getFormUrl();
Logger.log("formUrl2 %s", formUrl);
if (formUrl) {
  Logger.log("formid2 %s", FormApp.openByUrl(formUrl).getId());
}

在我的情况下,电子表格是由表单创建的(在“答案”部分中,绿色的电子表格图标),并且formUrl2引用此表单。一张纸的formUrl1也与此表格有关,因为这张纸包含表格的答案。另一个工作表具有第二个表单的URL,因为我将第二个表单连接到了同一电子表格。第三张纸的formUrl为null,因为它与表格无关。

答案 3 :(得分:-1)

我举例说明了我的剧本。 也许它可以帮助你。

示例:

var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Sheet1");
  var data = ss.getDataRange().getValues();  // Data for pre-fill

  var formUrl = ss.getFormUrl();             // Use form attached to sheet
  var form = FormApp.openByUrl(formUrl);
  var items = form.getItems();