如何使用 Google Apps 脚本动态更改 Google 表单上的现有文本项值

How to dynamically change an existing text item value on Google Forms using Google Apps Script

我有一个现有的 Google 表单,其中有一个标题为 "Which location was this performed at?" 的 TextItem。

每当加载(打开)表单时,我都需要为这个现有的文本框设置一个位置值 (loc) 并将其显示给用户。

function populateMemberIds(loc){
    var form = FormApp.openById(formUrl);
    var questions = form.getItems();
    for (var i=0; i<questions.length; i++){
       if(questions[i].getTitle()=="Which location was this performed at?"){
       var textItem = questions[i].asTextItem();
       //I get stuck here
    }

}

我已经设置了 openForm 触发器,它允许 运行 populateMemberIds 函数在每次加载表单时 运行。同样,我需要用位置值 (loc) 更改文本项的 "Your answer" 部分的值。

如有任何帮助,我将不胜感激。

您无法修改用户填写的表单回复,您可以通过编程方式创建表单回复或在提交后编辑回复。 onOpen 表单触发器在有人打开表单进行编辑而不是回答时运行 [1]:

This event does not occur when a user opens a form to respond, but rather when an editor opens the form to modify it.

此外,触发器函数带有一个已经定义的事件参数 [1],因此您不能像使用 loc 参数那样设置自己的函数参数。

编辑

您可以通过编程方式创建和提交表单回复 [2],您还可以从中获得 URL 以及供用户完成的预填表单 [3]。

function populateMemberIds(loc){
  var form = FormApp.openById("[FORM-ID]");
  var questions = form.getItems();
  var response = form.createResponse(); 

  for (var i=0; i<questions.length; i++){
    if(questions[i].getTitle()=="title form"){//Which location was this performed at?"){
      var textItem = questions[i].asTextItem();
      var itemResponse = textItem.createResponse(loc) ;
      response.withItemResponse(itemResponse);
    }
  }
  //Submit programmatically the form response
  response.submit();
  //URL with prefilled form response
  Logger.log(response.toPrefilledUrl()); 
}

function test () {
  populateMemberIds("US");
}

[1] https://developers.google.com/apps-script/guides/triggers/events#google_forms_events

[2]https://developers.google.com/apps-script/reference/forms/form-response

[3]https://developers.google.com/apps-script/reference/forms/form-response#toprefilledurl

Google 的 onOpen Google Apps 脚本触发器(简单且可安装)Google 表单仅在表单编辑器中打开表单时执行,而不是在使用视图打开表单时执行/ 编辑回复链接。

"prefill" Google 表单响应有两种方法:

  1. 使用预填回复URL
  2. 以编程方式创建响应,然后使用 editResponseUrl

相关

  • Is it possible to 'prefill' a google form using data from a google spreadsheet?
  • How to generate a pre-filled form URL for Google Form