从 google 应用程序脚本中设置 Google 表单项的预填充值

Set pre-filled value of Google Form item from google apps script

我想达到什么目的?

我想跟踪 google 文档的审阅状态,该文档具有 google 表单,下拉选项为 "To do, In progress, Done"。我有 google 个表单项 "URL of document, Status"。我创建了一个 google 表单模板,我将使用它来为各种用户创建表单。我希望能够创建模板表单的副本,并从 google 应用程序脚本中设置 "URL" 的预定义值,以便用户只需 select 文档的状态.

我尝试了什么?

我从这个 answer 中发现了 createResponse() 方法,但这需要使用 .submit() 来保存响应并将答案记录在工作表中。我不想从脚本本身提交表单。这是代码:

function form()
{
  var form  = FormApp.create("Test");
  form.addTextItem().setTitle("URL");
  form.addTextItem().setTitle("Status");

  var items = form.getItems();
  var url = items[0].asTextItem();
  var fr = url.createResponse('my predefined url');

  var FormResponse = form.createResponse();
  FormResponse.withItemResponse(fr);
  FormResponse.submit();
  Logger.log(form.getPublishedUrl());
}

最终查询:

如何从应用程序脚本中获取已发布的 URL 表单以及对 URL 项目的预填答案?可能吗?

原来有一个方法 .toPrefilledUrl() 可以返回已发布的 url 表单,其中包含预填值。这是一个例子:

  var form  = FormApp.openByUrl("url");
  var items = form.getItems();
  var url = items[0].asTextItem();
  var d= "some.url"
  var fr = url.createResponse(d);

  var FormResponse = form.createResponse();
  var urlPub = FormResponse.withItemResponse(fr).toPrefilledUrl();
  Logger.log(urlPub);