Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何为Google表单生成预填充表单URL_Google Apps Script_Google Docs_Google Docs Api - Fatal编程技术网

Google apps script 如何为Google表单生成预填充表单URL

Google apps script 如何为Google表单生成预填充表单URL,google-apps-script,google-docs,google-docs-api,Google Apps Script,Google Docs,Google Docs Api,我正在寻找一种编程方式来自动生成谷歌表单的预填充URL 在最近的一次更新中,谷歌在谷歌文档中引入了一个新的表单产品。如果在电子表格中打开“工具”菜单,您将看到一些新选项 在新表单响应菜单中,一个选项是“获取预填充URL”。这将打开一个对话框,其中包含您可以填写的表单版本,当您提交该表单时,您将收到一个URL,该URL可用于打开一个实时表单,其中包含您预先填写并等待您的数据。URL看起来像这样 https://docs.google.com/forms/d/--Form-ID--/viewfor

我正在寻找一种编程方式来自动生成谷歌表单的预填充URL

在最近的一次更新中,谷歌在谷歌文档中引入了一个新的表单产品。如果在电子表格中打开“工具”菜单,您将看到一些新选项

在新表单响应菜单中,一个选项是“获取预填充URL”。这将打开一个对话框,其中包含您可以填写的表单版本,当您
提交该表单时,您将收到一个URL,该URL可用于打开一个实时表单,其中包含您预先填写并等待您的数据。URL看起来像这样

https://docs.google.com/forms/d/--Form-ID--/viewform?entry.1094330118=Something&entry.1471717973=stack@example.com&entry.540962741&entry.787941281&entry.1873343651
表单中的问题具有固定的标识,例如
条目。1094330118
。它们可以预先填充值(
entry.1094330118=Something
)或空白(
entry.7879412

在应用程序脚本中,我想为我表单的用户生成这些预填充的URL,以便为更新提供它们。我的用户不是应用程序域的成员,因此我没有嵌入“编辑您的响应”链接的选项

如果我能得到关于表单的信息,我将能够拼凑出URL。虽然我可以通过UI创建一个URL,并对其进行解析以获取该表单的信息,但我需要一个能够处理任意表单的解决方案

  • 如何以编程方式确定问题ID
  • 用新的 表单产品,我是否可以通过任何应用程序脚本使用该表单 API?(我知道
    getFormURL()
    ——我不是这个意思。)
  • 如果有问题ID,我可以获得有关该问题的更多信息吗?(问题文本、类型等)

  • 目前无法执行此操作,但问题跟踪器正在跟踪此请求。请在那里添加您的用例并查看更新

    我需要类似的东西让用户去编辑他们的回复,看看这里:

    复制/粘贴以下代码:

    function assignEditUrls() {
    var form = FormApp.openById('1MonO-uooYhARHsr0xxxxxxxxxxxxxxxxxxxxx');
    //enter form ID here
    
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
    
        //Change the sheet name as appropriate
      var data = sheet.getDataRange().getValues();
      var urlCol = 4; // column number where URL's should be populated; A = 1, B = 2 etc
      var responses = form.getResponses();
      var timestamps = [], urls = [], resultUrls = [];
    
      for (var i = 0; i < responses.length; i++) {
        timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
        urls.push(responses[i].getEditResponseUrl());
      }
      for (var j = 1; j < data.length; j++) {
    
        resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
      }
      sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);  
    }
    
    函数assignEditUrls(){
    var form=FormApp.openById('1MonO-uooyharhsr0xxxxxxxxxxxxxxxxxx');
    //在此处输入表单ID
    var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
    //根据需要更改图纸名称
    var data=sheet.getDataRange().getValues();
    var urlCol=4;//应该填充URL的列号;A=1,B=2等
    var responses=form.getResponses();
    var时间戳=[]、URL=[]、结果URL=[];
    对于(var i=0;i
    我找不到从表单id本身创建预填充URL的方法。如果表格中已有答案,则可以:

      var form = FormApp.openById('1nGvvEzQHN1n-----_your_for_id_----zemoiYQA');
      var responses = form.getResponses();
      Logger.log(responses[0].toPrefilledUrl());
    

    谢谢,我已经添加了我的vte,并链接回这里。考虑到问题单是用于标记为“已修复”的通用表单Api访问/文档,将此用例作为新问题单输入不是更好吗?mhawksey-使用新Api,可以获得预填充的URL。创建一个“FormResponse”对象并获取其预填充的URL。请参阅此处的文档-@Arun是否可以进行HTTP调用并从中获取值,而不是从电子表格中获取值并填写表单?感谢您提供的示例以及在Google Docs论坛上指出Adam的代码。这当然会对其他人有所帮助。看看有哪些方法可以做到这一点。