【问题标题】:How to (from a Google Spreadsheet) get the ID of a linked form如何(从 Google 电子表格)获取链接表单的 ID
【发布时间】:2014-08-08 01:15:02
【问题描述】:

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

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

function getID()
{
 var form = FormApp.getActiveForm();
 var formID = form.getId();
 Logger.log(formID);
}

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

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

如果我知道表单的名称,我可以使用 DriveApp.getFilesByName() 通过名称获取它,遍历它,然后使用 File.getId(),但我不一定知道名称。

有什么想法吗?

【问题讨论】:

  • 可能需要先手动运行函数来授予权限

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


【解决方案1】:

是的。

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

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.

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

【讨论】:

  • 没错,这将为您提供表单 URL,但 OP 询问如何获取表单 ID,这需要额外的步骤来从 URL 中提取 ID 部分。
【解决方案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

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    如果您只需要附加表单的表单 ID,并且出于任何原因不需要保留表单 URL,则此一行就足够了:

        var formID = SpreadsheetApp.getActiveSpreadsheet().getFormUrl().match(/\/d\/(.{25,})\//)[1];
    

    【讨论】:

      【解决方案4】:

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

      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() );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        相关资源
        最近更新 更多