在类Spreadsheet中有getFormUrl()
返回附加到电子表格的表单的url,如果没有表单则返回null。
但是现在您可以在每张工作表上附加一个表单,如何获取附加到给定工作表的表单的ID或URL?
我刚刚获取了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];
}
我注意到sheet.getFormURL()方法并不总是返回form.getPublishedUrl()返回的相同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]
我举例说明了我的剧本。也许它可以帮到你。
例如:
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();