在课程Spreadsheet中,getFormUrl()
会返回附加到电子表格的表单的网址,如果没有表单,则返回null。
但是现在您可以在每张表格上附上表格,如何获得附在指定表格上的表格的ID或网址?
答案 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();