我有一个表格链接到的Google电子表格,并且存储了所有表单回复。我想要找到的是FORM本身的ID。我尝试了这个,但这不起作用..
(我正在运行以下代码FROM脚本编辑器在表单链接到的电子表格中。)
function getID()
{
var form = FormApp.getActiveForm();
var formID = form.getId();
Logger.log(formID);
}
返回NULL,因为脚本是容器绑定到电子表格本身的。有没有其他方法可以获取链接表单的ID甚至是链接表单的URL?
我可以通过从电子表格中执行以下操作来手动获取它。 表格>编辑表格 这将显示URL。
如果我知道表单的名称,我可以使用DriveApp.getFilesByName()通过名称获取它,迭代它然后使用File.getId(),但我不一定知道名称。
有什么想法吗?
答案 0 :(得分:6)
为了避免解析网址,最安全的方法是:
Logger.log( (FormApp.openByUrl(SpreadsheetApp.getActiveSpreadsheet().getFormUrl())).getId() );
或长手版:
function logFormId_LongHand(){
var formURL = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
var form = FormApp.openByUrl(formURL);
var formId = form.getId();
Logger.log( formId );
}
要在电子表格应用程序脚本中获取表单对象,请使用以下函数:
function getLinkedForm(){
return FormApp.openByUrl( SpreadsheetApp.getActiveSpreadsheet().getFormUrl() );
}
答案 1 :(得分:2)
对于偶然发现此问题的任何人:新的电子表格允许这样做。我已经尝试过了,它对我有用。以下是我获取ID的方法:
var formUrl = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
var formID = formUrl.match(/[-\w]{25,}/);
我从这个问题得到了正则表达式:Easiest way to get file ID from URL on Google Apps Script
希望这有帮助。
答案 2 :(得分:1)
如果您只想要附加表格的表格ID,并且不需要出于任何原因保留表格URL,这个单行就足够了:
var formID = SpreadsheetApp.getActiveSpreadsheet().getFormUrl().match(/\/d\/(.{25,})\//)[1];
答案 3 :(得分:0)
是
这将是一个这样的脚本,可以在电子表格中运行:
function getFormUrl()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formUrl = ss.getFormUrl();
Logger.log(formUrl);
}
但是,如果您尝试在新电子表格中运行此功能,则会收到以下错误消息:
The api method 'getFormUrl' is not available yet in the new version of Google Sheets.
因此,在他们添加支持之前,它只适用于旧版本。