Kısa cevap
Bağlantı iki cevap ama bunların-olmayan bana bakar sahip bir Q & A noktaları uygun olanı olmak. IE, cevaplardan birinin kodu eksik ve her ikisi de e-posta gönderiyor, bu yüzden benimseme bir başlangıç noktası olarak kullanmak için çok karmaşık.
Aşağıda benimsenmesi daha kolay bir betik bulunmaktadır.
Talimatlar
Bir test formu oluşturun ve form kimliğini not edin ( url arasında ../d/
ve /edit
içinde).
Yeni bir e-tabloya yanıt göndermek için formu ayarlayın.
Yeni e-tabloya yönlendirileceksiniz. Etkin sayfa adını not edin (isterseniz yeniden adlandırın) ve yanıt düzenleme URL'lerini tutmak için kullanılacak sütuna bir başlık ekleyin Edit Url
; NOT: Büyük harf kullanımı çok önemlidir, bu yüzden nasıl yazdığınıza çok dikkat edin.
Tools > Script editor
E-tabloyla sınırlı bir Google Apps Komut Dosyası projesi eklemek için adresine gidin .
Varsayılan kodu aşağıdaki kodla değiştirin (genel değişkenleri durumunuza göre düzenlemeyi unutmayın).
Projeyi kaydedin ve sonra yüklenebilir bir form zirve tetikleyicisi ekleyin ("Yetkilendirme gerekli" iletişim kutusu görüntülenirse, "İzinleri Gözden Geçir" i ve ardından "İzin Ver" i tıklatın).
Çözümü test etmek için bazı örnek yanıtlar gönderin.
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);
}
}
}
Ek kaynaklar
Soru ve cevaptaki içerikle bir özgeçmiş oluşturdum . Bu b / c Kod yazan son kullanıcılar arasında daha iyi işbirliği yapmanın yollarını araştırıyorum.