Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 Forms - Fatal编程技术网

Google apps script 将Google表单的编辑响应URL添加到其电子表格中

Google apps script 将Google表单的编辑响应URL添加到其电子表格中,google-apps-script,google-forms,Google Apps Script,Google Forms,我想将Google表单的编辑响应URL添加到其电子表格中,并尝试了下面链接中的代码,但什么也没发生。知道有什么问题吗 做了以上所有的事情,但还是有一些不存在。 现在用这个解决方法解决了这个问题,每次提交表单时都会触发所有响应- function responseURL() { var form = FormApp.openById('PUzzMB0ElYOtqGIk6ir1sBrDhowmU8o-afiDqiET'); var ss = SpreadsheetApp.getActive

我想将Google表单的编辑响应URL添加到其电子表格中,并尝试了下面链接中的代码,但什么也没发生。知道有什么问题吗


做了以上所有的事情,但还是有一些不存在。 现在用这个解决方法解决了这个问题,每次提交表单时都会触发所有响应-

function responseURL() {
  var form = FormApp.openById('PUzzMB0ElYOtqGIk6ir1sBrDhowmU8o-afiDqiET');
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('formData');
  var formResponses = form.getResponses();
  for (var i = 0; i < formResponses.length; i++) {
    var formResponse = formResponses[i];
    sheet.getRange(i+2, 4).setValue(formResponse.getEditResponseUrl());
  }
}
函数responseURL(){
var form=FormApp.openById('PUzzMB0ElYOtqGIk6ir1sBrDhowmU8o-afiDqiET');
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('formData');
var formResponses=form.getResponses();
对于(var i=0;i
解析响应表中editResponseUrl的优雅方式 在脚本编辑器中将函数设置为表单的提交触发器后,我的工作正常

//安装为链接到表单的google脚本,而不是电子表格。必须添加触发器才能在表单提交时运行assignEditUrls()。
//链接到表单的好处是,复制电子表格将复制电子表格、表单和脚本。
函数assignEditUrls(){
var form=FormApp.getActiveForm();
var ss=SpreadsheetApp.openById(form.getDestinationId());
var sheet=ss.getSheets()[0];
var data=sheet.getDataRange().getValues();
var urlCol=2;//应该填充URL的列号;A=1,B=2等
var responses=form.getResponses();
var时间戳=[]、URL=[]、结果URL=[];
对于(var i=0;i
您是否创建了触发器?是否更新了函数的触发器名称。您的函数是否有事件参数?
function responseURL() {
  var form = FormApp.openById('PUzzMB0ElYOtqGIk6ir1sBrDhowmU8o-afiDqiET');
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('formData');
  var formResponses = form.getResponses();
  for (var i = 0; i < formResponses.length; i++) {
    var formResponse = formResponses[i];
    sheet.getRange(i+2, 4).setValue(formResponse.getEditResponseUrl());
  }
}
// install as a google script linked to the form, not the spreadsheet. must add a trigger to run assignEditUrls() on form submit.
// benefit of linking to the form is that copying the spreadsheet will copy the spreadsheet, form and script.
function assignEditUrls() {
  var form = FormApp.getActiveForm();
  var ss = SpreadsheetApp.openById(form.getDestinationId());
  var sheet = ss.getSheets()[0];

  var data = sheet.getDataRange().getValues();
  var urlCol = 2; // 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('=HYPERLINK("' + responses[i].getEditResponseUrl() + '", "edit")');
  }
  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);  
}