如何(从Google电子表格中)获取链接表单的ID

时间:2014-06-17 21:38:37

标签: google-apps-script google-sheets google-form

我有一个表格链接到的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(),但我不一定知道名称。

有什么想法吗?

4 个答案:

答案 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.

因此,在他们添加支持之前,它只适用于旧版本。