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

use*_*438 2 google-sheets google-apps-script google-forms

我有一个与表单链接的Google电子表格,并且所有表单响应都存储在其中。我试图找到的是表单本身的ID。我试过了,但这行不通..

(我正在从表单所链接到的电子表格中的脚本编辑器中运行以下代码。)

function getID()
{
 var form = FormApp.getActiveForm();
 var formID = form.getId();
 Logger.log(formID);
}
Run Code Online (Sandbox Code Playgroud)

由于脚本是容器绑定到电子表格本身的,因此返回NULL。还有什么其他方法可以获取链接表单的ID甚至链接表单的URL?

我可以通过从电子表格执行以下操作来手动获取它。表单>编辑表单这将显示URL。

如果我知道表单的名称,则可以使用DriveApp.getFilesByName()通过名称来获取它,然后对其进行迭代,然后使用File.getId(),但我不一定知道该名称。

有任何想法吗?

小智 6

为了避免解析URL,最安全的方法是:

Logger.log( (FormApp.openByUrl(SpreadsheetApp.getActiveSpreadsheet().getFormUrl())).getId() );
Run Code Online (Sandbox Code Playgroud)

或长手版本:

function logFormId_LongHand(){
  var formURL = SpreadsheetApp.getActiveSpreadsheet().getFormUrl();
  var form = FormApp.openByUrl(formURL);
  var formId = form.getId();
  Logger.log( formId );
}
Run Code Online (Sandbox Code Playgroud)

为了在电子表格应用程序脚本中获取表单对象,我使用以下函数:

function getLinkedForm(){
  return FormApp.openByUrl( SpreadsheetApp.getActiveSpreadsheet().getFormUrl() );
}
Run Code Online (Sandbox Code Playgroud)


小智 0

是的。

这将是一个从电子表格中运行的脚本:

function getFormUrl()
{

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var formUrl = ss.getFormUrl();
 Logger.log(formUrl);

}
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试在新电子表格中运行它,您会收到以下错误消息:

The api method 'getFormUrl' is not available yet in the new version of Google Sheets.
Run Code Online (Sandbox Code Playgroud)

因此,在他们添加支持之前,它只能在旧版本中使用。