스크립트를 사용하여 Google 스프레드 시트에서 Google 설문지의 응답을 편집하는 데 사용되는 URL 표시


11

Google 설문지의 수정 URL을 첨부 된 응답 Google 스프레드 시트에 자동으로 채우려 고합니다. 나는 이것을 이미 보았고 그것을 사용하고 싶지만 정확하게 스크립트를 어디에 넣을 지 알아내는 데 문제가 있습니다.

URL을 표시하려는 Google 스프레드 시트의 스크립트 편집기에 넣으려고했지만 어디로 가야할지 확실하지 않습니다. 스크립트 편집기에서 추가 기능으로 테스트하려고 시도했지만 작동하지 않았습니다.

Google 스프레드 시트의 스크립트 및 스크립트 편집기에 대한 경험이 거의 없습니다. 마지막으로 동일한 Google 스프레드 시트에서 AutoCrat라는 다른 추가 기능을 사용하고 있습니다.


코드 소스에 대한 링크 외에도 코드와 테스트 수행 단계를 포함시키는 것이 좋습니다.
Rubén

답변:


16

짧은 답변

링크 는 두 가지 답변이 있지만 그 중 비 응답 인 Q & A를 가리 킵니다. IE는 답변 중 하나의 코드가 불완전하며 둘 다 이메일을 보내므로 채택이 너무 복잡하여 출발점으로 사용할 수 없습니다.

아래는 채택하기 쉬운 스크립트입니다.

명령

  1. 테스트 양식을 작성하고 양식 ID ( URL 사이 ../d//editURL)를 기록하십시오. 새로운 형태

  2. 새 스프레드 시트에 응답을 보내도록 양식을 설정하십시오. 스프레드 시트 연결

  3. 새 스프레드 시트로 리디렉션됩니다. 활성 시트 이름을 기록하고 (원하는 경우 이름을 변경) 응답 편집 URL을 보유하는 데 사용할 열에 헤더 를 추가하십시오 ( 예 :) Edit Url. 참고 : 대문자 사용은 매우 중요하므로 작성 방법에 매우주의하십시오. 응답 스프레드 시트

  4. Tools > Script editor스프레드 시트에 바인드 된 Google Apps Script 프로젝트를 추가 하려면 로 이동 하십시오. 스프레드 시트 스크립트

  5. 기본 코드를 아래 코드로 바꿉니다 (경우에 따라 전역 변수를 편집해야 함). 스크립트 코드

  6. 프로젝트를 저장 한 다음 설치 가능한 양식 서밋 트리거를 추가하십시오 ( "권한 부여"대화 상자가 표시되면 "권한 검토"및 "허용"을 클릭하십시오). 양식 제출 트리거

  7. 솔루션을 테스트하기 위해 샘플 응답을 제출하십시오.

암호

/*
 * Global Variables
 */

// Form URL
var formURL = 'https://docs.google.com/forms/d/form-id/viewform';
// Sheet name used as destination of the form responses
var sheetName = 'Form Responses 1';
/*
 * Name of the column to be used to hold the response edit URLs 
 * It should match exactly the header of the related column, 
 * otherwise it will do nothing.
 */
var columnName = 'Edit Url' ;
// Responses starting row
var startRow = 2;

function getEditResponseUrls(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
  var columnIndex = headers[0].indexOf(columnName);
  var data = sheet.getDataRange().getValues();
  var form = FormApp.openByUrl(formURL);
  for(var i = startRow-1; i < data.length; i++) {
    if(data[i][0] != '' && data[i][columnIndex] == '') {
      var timestamp = data[i][0];
      var formSubmitted = form.getResponses(timestamp);
      if(formSubmitted.length < 1) continue;
      var editResponseUrl = formSubmitted[0].getEditResponseUrl();
      sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl);
    }
  }
}

추가 자료

질문과 답변의 내용 으로 요점 을 만들었습니다 . 이 b / c 저는 코드를 작성하는 최종 사용자들 사이에서보다 효과적으로 협업 할 수있는 방법을 모색하고 있습니다.


1
나는 그것을 얻었고, 시트 이름이었고, URL 끝에 '/ viewform'을 가져 왔습니다. 정말 고마워!
nick

1
@ Rubén-내가 직접 따라갈 때 몇 가지 단계로 어려움을 겪으면서 훌륭한 튜토리얼에 약간의 세부 사항을 추가하는 자유를 얻었습니다.
Sphinxxx

1
확인. 내가 코드를 변경 한 주된 이유 는 나중에 Google의 URL 형식이 변경 될 경우 전체 URL FormApp.openById()대신 양식 ID로만 사용할 수 있음을 보여 FormApp.openByUrl()주었기 때문입니다. 대신 요점에 의견을 남길 것입니다.
Sphinxxx

3
내 Google 스크립트 창에서 "현재 프로젝트의 트리거"는 "편집"에있었습니다.
dvb

1
@HoangTrinh 참조 canEditResponse ()
Rubén
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.