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
Buat formulir tes dan catat ID formulir (di antara ../d/
dan /edit
di url).
Setel formulir untuk mengirim respons ke spreadsheet baru.
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.
Pergi ke Tools > Script editor
untuk menambahkan proyek Skrip Google Apps yang dibatasi ke spreadsheet.
Ganti kode default dengan kode di bawah ini (ingat untuk mengedit variabel global sesuai dengan kasus Anda).
Simpan proyek, dan kemudian tambahkan pemicu puncak formulir yang dapat diinstal (jika Anda mendapatkan dialog "Diperlukan otorisasi", klik "Tinjau Izin" dan kemudian "Izinkan").
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.