Tampilkan URL yang digunakan untuk mengedit respons dari Formulir Google di Google Spreadsheet dengan menggunakan skrip

11

Saya mencoba membuat URL edit untuk Formulir Google secara otomatis mengisi dalam respons Google Sheet yang dilampirkan. Saya sudah melihat ini dan ingin menggunakannya, tetapi saya mengalami masalah dalam mencari tahu di mana tepatnya untuk meletakkan skrip.

Saya sudah mencoba meletakkannya di editor skrip di Google Spreadsheet yang saya inginkan URLnya muncul, tetapi saya tidak yakin ke mana harus pergi dari sana. Di editor skrip saya sudah mencoba mengujinya sebagai add-on tapi itu tidak berhasil.

Saya memiliki sedikit pengalaman dengan skrip dan editor skrip di Google Sheets. Sebagai catatan akhir, saya menggunakan satu add-on lainnya yang disebut AutoCrat di Google Spreadsheet yang sama.

torehan
sumber
Selain itu tautan ke sumber kode yang Anda coba baik untuk menyertakan kode dan langkah-langkah yang diikuti untuk melakukan tes Anda.
Rubén

Jawaban:

16

Jawaban singkat

The Link poin untuk Q & A yang memiliki dua jawaban tetapi non-dari mereka tampak bagi saya untuk menjadi telah sesuai. Yaitu kode salah satu jawaban tidak lengkap dan keduanya mengirim email, jadi adopsi terlalu rumit untuk digunakan sebagai titik awal.

Di bawah ini adalah skrip yang lebih mudah untuk diadopsi.

Instruksi

  1. Buat formulir tes dan catat ID formulir (di antara ../d/dan /editdi url). Bentuk baru

  2. Setel formulir untuk mengirim respons ke spreadsheet baru. Hubungkan spreadsheet

  3. Anda akan diarahkan ke spreadsheet baru. Catat nama sheet aktif (ganti nama jika Anda mau) dan tambahkan header ke kolom yang akan digunakan untuk menahan URL edit respons, yaitu Edit Url. CATATAN: Kapitalisasi sangat penting, jadi berhati-hatilah pada bagaimana Anda menulisnya. Spreadsheet tanggapan

  4. Pergi ke Tools > Script editoruntuk menambahkan proyek Skrip Google Apps yang dibatasi ke spreadsheet. Skrip spreadsheet

  5. Ganti kode default dengan kode di bawah ini (ingat untuk mengedit variabel global sesuai dengan kasus Anda). Kode skrip

  6. Simpan proyek, dan kemudian tambahkan pemicu puncak formulir yang dapat diinstal (jika Anda mendapatkan dialog "Diperlukan otorisasi", klik "Tinjau Izin" dan kemudian "Izinkan"). Formulir kirim pemicu

  7. Kirimkan beberapa tanggapan sampel untuk menguji solusinya.

Kode

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

Sumber daya tambahan

Saya membuat intisari dengan konten dari pertanyaan dan jawaban. b / c ini saya sedang mencari cara untuk berkolaborasi lebih baik antara pengguna akhir yang menulis kode.

Rubén
sumber
1
Saya mengerti, itu adalah nama sheet, dan saya mengeluarkan '/ viewform' di akhir URL. Terima kasih banyak!
torehan
1
@ Rubén - Saya mengambil kebebasan untuk menambahkan sedikit lebih detail pada tutorial hebat Anda, karena saya berjuang dengan beberapa langkah ketika saya mengikutinya sendiri.
Sphinxxx
1
Baik. Alasan utama saya mengubah kode adalah untuk menunjukkan bahwa Anda dapat menggunakan FormApp.openById()hanya dengan ID formulir alih-alih FormApp.openByUrl()dengan keseluruhan URL, seandainya format URL Google berubah di masa mendatang. Saya akan meninggalkan komentar pada inti Anda sebagai gantinya.
Sphinxxx
3
Di jendela skrip google saya, "Pemicu proyek saat ini" berada di bawah "Edit".
dvb
1
@HoangTrinh See canEditResponse ()
Rubén