Pokaż adres URL używany do edycji odpowiedzi z formularza Google w arkuszu kalkulacyjnym Google za pomocą skryptu

11

Staram się, aby adres URL edycji formularza Google był automatycznie wypełniany w odpowiedzi na arkusz Google, do którego jest dołączony. Widziałem to już i chcę z niej skorzystać, ale mam problemy z ustaleniem, gdzie dokładnie umieścić skrypt.

Próbowałem umieścić go w edytorze skryptów w Arkuszu kalkulacyjnym Google, w którym chciałbym, aby adres URL pojawiał się, ale nie jestem pewien, dokąd mam się udać. W edytorze skryptów próbowałem przetestować go jako dodatek, ale to nie zadziałało.

Mam niewielkie doświadczenie ze skryptami i edytorem skryptów w Arkuszach Google. Na koniec korzystam z jednego dodatku o nazwie AutoCrat w tym samym arkuszu kalkulacyjnym Google.

nicki
źródło
Oprócz linku do źródła kodu, który wypróbowałeś, dobrze jest dołączyć kod i wykonać kroki, aby wykonać testy.
Rubén

Odpowiedzi:

16

Krótka odpowiedź

The Link wskazuje na Q & A, który ma dwie odpowiedzi, ale nie z nich wygląda mi się, jest właściwa. IE kod jednej z odpowiedzi jest niekompletny i obie wysyłają e-maile, więc adopcja jest zbyt złożona, aby mogła być wykorzystana jako punkt wyjścia.

Poniżej znajduje się skrypt, który jest łatwiejszy do przyjęcia.

Instrukcje

  1. Utwórz formularz testowy i zanotuj identyfikator formularza (między ../d/i /editw adresie URL). Nowa forma

  2. Ustaw formularz, aby wysyłać odpowiedzi do nowego arkusza kalkulacyjnego. Połącz arkusz kalkulacyjny

  3. Nastąpi przekierowanie do nowego arkusza kalkulacyjnego. Zanotuj nazwę aktywnego arkusza (zmień jego nazwę, jeśli chcesz) i dodaj nagłówek do kolumny, który będzie używany do przechowywania adresów URL edycji odpowiedzi, tj Edit Url. UWAGA: wielkie litery są bardzo ważne, więc bądź bardzo ostrożny, jak je napisać. Arkusz odpowiedzi

  4. Przejdź do, Tools > Script editoraby dodać projekt Google Apps Script ograniczony do arkusza kalkulacyjnego. Skrypty arkusza kalkulacyjnego

  5. Zastąp domyślny kod poniższym kodem (pamiętaj, aby edytować zmienne globalne odpowiednio do przypadku). Kod skryptu

  6. Zapisz projekt, a następnie dodaj instalowalny wyzwalacz szczytu formularza (jeśli pojawi się okno dialogowe „Wymagana autoryzacja”, kliknij „Przejrzyj uprawnienia”, a następnie „Zezwól”). Prześlij wyzwalacz formularza

  7. Prześlij przykładowe odpowiedzi, aby przetestować rozwiązanie.

Kod

/*
 * 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);
    }
  }
}

Dodatkowe zasoby

Stworzyłem treść z treścią pytania i odpowiedzi. ten b / c szukam sposobów na lepszą współpracę między użytkownikami końcowymi, którzy piszą kod.

Ruben
źródło
1
Rozumiem, to była nazwa arkusza i wyjąłem „/ viewform” na końcu adresu URL. Dzięki wielkie!
nicks
1
@ Rubén - Pozwoliłem sobie dodać trochę więcej szczegółów do twojego świetnego samouczka, ponieważ zmagałem się z kilkoma krokami, gdy sam go wykonałem.
Sphinxxx
1
Ok. Głównym powodem, dla którego zmieniłem kod, było pokazanie, że możesz używać FormApp.openById()tylko identyfikatora formularza zamiast FormApp.openByUrl()całego adresu URL, na wypadek zmiany formatu adresu URL Google w przyszłości. Zamiast tego zostawię komentarz do twojej treści.
Sphinxxx
3
W moim oknie skryptu Google „Wyzwalacze bieżącego projektu” znajdowały się pod „Edytuj”.
dvb
1
@HoangTrinh Zobacz canEditResponse ()
Rubén