스크립트를 사용하여 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.