Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 28 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save pierandrea/3fcccada803ca34c9e09 to your computer and use it in GitHub Desktop.
Save pierandrea/3fcccada803ca34c9e09 to your computer and use it in GitHub Desktop.
Google Apps Script code to add Google Form edit response links to spreadsheet
Copy the code above.
Paste it in the Google Sheet where you want to collect the edit response links.
Change the following parameters:
line 2 - Google Form ID number;
line 5 - Destination Worksheet name;
line 9 - Column number where edit response links should be collected;
Save and run script.
Check that edit response links are collected in the right column in your destination Sheet
@bobbyburns
Copy link

bobbyburns commented Feb 6, 2023 via email

@cmoli018
Copy link

cmoli018 commented May 17, 2023

I tried doing this in the spreadsheet where my form responses are being put and I can't get it to populate. When I run it I don't get any error messages (execution started and completed) but it doesn't show up in my spreadsheet. Can someone help me troubleshoot this?

As a site note, what does the sheet name refer to? I've tried it both ways and neither worked but is it the file name (top left) or the tab name (bottom left)?

function assignEditUrls() {
  var form = FormApp.openById('1CTdJNu9_goN5lLbmQeHmeFySUfQLTg-SYp2rGpfCiD8');
    //enter form ID here

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");

  var data = sheet.getDataRange().getValues();
  var urlCol = 59; // 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);  
}

My spreadsheet: This should be populating in column BG

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment