Apakah mungkin dalam Formulir Google untuk memberikan nilai unik untuk setiap baris yang dimasukkan ke dalam spreadsheet serta stempel waktu?
google-sheets
google-forms
Toby Allen
sumber
sumber
Jawaban:
Anda dapat melakukan ini dengan menambahkan pemicu skrip.
Andaikan Formulir Anda saat ini memiliki dua kolom
Timestamp
dan jawaban untuk satu pertanyaan. Jadi saat ini Anda memiliki kolom A dan B yang diisi dengan data. Mari kita asumsikan Anda ingin kolom C meminta Anda menambahkan angka secara otomatis.Anda harus pergi dulu ke
Tools
>Script Editor
Di jendela Editor Skrip masukkan skrip berikut:
Simpan skrip lalu buka
Triggers
menu dan pilihCurrent script's triggers
Populasikan drop down sebagai berikut:
Klik
Save
Kemudian Simpan dan tutup jendela Google App Script.
Sekarang ketika formulir Anda dikirimkan, itu akan mengisi nomor baris di kolom C bersama dengan data yang telah dikirimkan melalui formulir Anda.
Jika Anda ingin mengubah kolom tempat nomor baris disimpan, Anda perlu mengubah baris skrip ini:
sheet.getRange(row,3).setValue(row);
dan ubah nilai 3 ke nomor indeks kolom yang sesuai.
sumber
Selanjutnya ke jawaban yang sangat baik oleh Barry, jika Anda ingin dapat menghapus baris, dan masih menyimpan ID unik Anda dapat memiliki sel statis yang mempertahankan hitungan. Anda kemudian dapat menggunakan nomor ini dan menambahkannya di setiap entri baru ke tabel.
Jadi modifikasinya adalah menyimpan nomor di suatu tempat di spreadsheet Anda ('M1' dalam kode di bawah ini) dan memodifikasi kode agar terlihat seperti ini:
Sekali lagi, ubah baris terakhir kedua untuk mengubah tempat ID Anda ditempatkan.
sumber
Membangun kedua jawaban sebelumnya (dari Barry dan Danny):
Mengasumsikan kolom ID adalah kolom A. Pilih sel "ID Berikutnya" dan setel ke rumus berikut (dengan asumsi itu dalam "P1"):
Buat skrip menggunakan editor skrip di bawah menu "Tools", dan rekatkan yang berikut ini:
Tambahkan pemicu skrip menggunakan menu "Pemicu" di editor skrip:
sumber
Lebih jauh ke jawaban di atas - Solusi ini tidak memerlukan sel spreadsheet tambahan.
Anda dapat menggunakan penangan acara bawaan untuk mengirimkan formulir untuk mendapatkan id unik. Karena spreadsheet hanyalah tujuan untuk formulir, menghapus baris sebenarnya tidak menghapus respons. Dengan mengingat hal itu ...
EDIT: menghapus kebutuhan untuk ID dan berurusan dengan masalah format tanggal.
sumber
getUniqueID
fungsi dapat sangat disederhanakan dengan hanya mengembalikan panjang tanggapan sampai saat ini (yang adalah apa logika fungsi ini dijelaskan di atas adalah melakukan dalam mode agak berbelit-belit). Pada dasarnya satu baris dalam fungsi:return getConnectedForm().getResponses().length;
Ini adalah turunan dari jawaban lain tetapi mungkin berguna untuk pengguna di masa depan.
Perbedaan utama adalah ia akan memperbarui kolom 1 di baris aktif ketika baris itu diedit tetapi hanya jika belum ada nilai yang ditentukan.
Anda harus mengatur pemicu seperti yang disebutkan dalam jawaban lain untuk di edit.
sumber
Untuk "Apakah mungkin dalam Formulir Google untuk memberikan nilai unik untuk setiap baris yang dimasukkan ke dalam spreadsheet serta stempel waktu?" sementara juga memungkinkan penghapusan baris dalam lembar respons Formulir sebelum penambahan Respons lebih lanjut tanpa nilai duplikat, ini harus bekerja:
sumber