Di Google Sheets, Anda dapat menambahkan beberapa fungsi skrip. Saya menambahkan sesuatu untuk onEdit
acara tersebut, tetapi saya tidak tahu apakah itu berfungsi. Sejauh yang saya tahu, Anda tidak dapat men-debug acara langsung dari Google Sheets, jadi Anda harus melakukannya dari debugger, yang tidak ada gunanya karena argumen acara yang dilewatkan ke onEdit()
fungsi saya akan selalu tidak terdefinisi jika saya menjalankannya dari Script Editor
.
Jadi, saya mencoba menggunakan Logger.log
metode untuk mencatat beberapa data setiap kali onEdit
fungsi dipanggil, tetapi ini sepertinya hanya berfungsi ketika dijalankan dari Script Editor
. Ketika saya menjalankannya dari Script Editor
, saya dapat melihat log dengan pergi keView->Logs...
Saya berharap saya bisa melihat log dari saat acara tersebut benar-benar dieksekusi, tetapi saya tidak bisa mengetahuinya.
Bagaimana cara men-debug hal ini?
sumber
Logger.log('firstLog');MailApp.sendEmail({to:'[email protected]',subject: "subject here ^_^",body: Logger.getLog()});
Jawaban:
MEMPERBARUI:
Seperti yang tertulis dalam jawaban ini ,
Stackdriver Logging adalah metode logging yang disukai sekarang.
Gunakan
console.log()
untuk masuk ke Stackdriver.Logger.log
akan mengirimi Anda email (akhirnya) kesalahan yang terjadi dalam skrip Anda, atau, jika Anda menjalankan sesuatu dariScript Editor
, Anda dapat melihat log dari fungsi yang terakhir dijalankan dengan masuk keView->Logs
(masih dalam editor skrip). Sekali lagi, itu hanya akan menunjukkan kepada Anda apa pun yang dicatat dari fungsi terakhir yang Anda jalankan dari dalamScript Editor
.Skrip yang saya coba kerjakan berkaitan dengan spreadsheet - Saya membuat jenis spreadsheet todo-checklist yang mengurutkan item berdasarkan prioritas dan semacamnya.
Satu-satunya pemicu yang saya instal untuk skrip itu adalah pemicu onOpen dan onEdit. Melakukan debug pada pemicu onEdit adalah yang paling sulit untuk diketahui, karena saya terus berpikir bahwa jika saya menetapkan breakpoint pada fungsi onEdit saya, membuka spreadsheet, mengedit sel, bahwa breakpoint saya akan dipicu. Ini bukan kasusnya.
Untuk mensimulasikan setelah diedit sel, saya tidak akhirnya harus melakukan sesuatu dalam spreadsheet yang sebenarnya sekalipun. Yang saya lakukan hanyalah memastikan sel yang saya inginkan untuk diperlakukan sebagai "diedit" dipilih, lalu masuk
Script Editor
, saya akan pergi keRun->onEdit
. Maka breakpoint saya akan dipukul.Namun, saya harus berhenti menggunakan argumen acara yang diteruskan ke fungsi onEdit - Anda tidak dapat mensimulasikannya dengan melakukan
Run->onEdit
. Setiap info yang saya butuhkan dari spreadsheet, seperti sel mana yang dipilih, dll, saya harus mencari tahu secara manual.Ngomong-ngomong, jawaban panjang, tapi akhirnya aku yang menemukannya.
EDIT :
Jika Anda ingin melihat daftar todo yang saya buat, Anda dapat memeriksanya di sini
(ya, saya tahu siapa pun dapat mengeditnya - itulah gunanya membagikannya!)
Saya berharap itu akan membiarkan Anda melihat skrip juga. Karena Anda tidak dapat melihatnya di sana, ini dia:
sumber
Benar - jadi tentukan sendiri argumen acara untuk debugging. Lihat Bagaimana saya bisa menguji fungsi pemicu di GAS?
Benar lagi, tetapi ada bantuan. Pustaka BetterLog Peter Hermann akan mengarahkan semua log ke spreadsheet, memungkinkan pencatatan bahkan dari kode yang tidak dilampirkan ke instance editor / debugger.
Misalnya, jika Anda mengkode dalam skrip yang berisi spreadsheet, Anda dapat menambahkan hanya satu baris ini ke bagian atas file skrip Anda, dan semua log akan masuk ke lembar "Log" di spreadsheet. Tidak perlu kode lain, cukup gunakan
Logger.log()
seperti biasa:sumber
console.log()
harus menjadi jawaban terbaik sekarangPembaruan 2017: Pencatatan Stackdriver sekarang tersedia untuk Google Apps Script. Dari bilah menu di editor skrip, goto:
View > Stackdriver Logging
untuk melihat atau mengalirkan log.console.log () akan menulis
DEBUG
pesan levelContoh
onEdit()
logging:Kemudian periksa log di UI Stackdriver berlabel
onEdit() Event Object
untuk melihat outputsumber
Logger.log
. Bagaimana ini berbeda dariconsole.log
yang Anda gunakan? Saya sangat baru dengan alat jadi hanya mencoba mencari tahu apa semuanya.Sedikit hacky, tapi saya membuat array yang disebut "konsol", dan kapan saja saya ingin output ke konsol saya mendorong ke array. Lalu setiap kali saya ingin melihat hasil aktual, saya hanya kembali,
console
bukan apa pun yang saya kembali sebelumnya.sumber
console.log('smth')
berfungsi dengan baik, tapi bagaimana dengan GAS?I just returned console
Anda mengeluarkannya?Jika Anda memiliki editor skrip terbuka, Anda akan melihat log di bawah-> Log. Jika skrip Anda memiliki pemicu onedit, buat perubahan ke spreadsheet yang seharusnya memicu fungsi dengan editor skrip dibuka di tab kedua. Lalu buka tab editor skrip dan buka log. Anda akan melihat apa pun fungsi Anda lewat ke logger.
Pada dasarnya selama editor skrip terbuka, acara akan menulis ke log dan menunjukkannya untuk Anda. Itu tidak akan ditampilkan jika orang lain ada di file di tempat lain.
sumber
Saya telah membaca tulisan-tulisan ini dan akhirnya menemukan jawaban yang sederhana, yang saya posting di sini untuk mereka yang menginginkan solusi singkat dan manis:
console.log("Hello World")
dalam skrip Anda.sumber
Saya mengalami masalah yang sama, saya menemukan di bawah ini di web di suatu tempat ....
Penangan acara di Documents sedikit rumit. Karena dokumen dapat menangani beberapa pengeditan simultan oleh beberapa pengguna, penangan acara ditangani di sisi server. Masalah utama dengan struktur ini adalah bahwa ketika skrip pemicu peristiwa gagal, maka gagal di server. Jika Anda ingin melihat info debug, Anda harus menyiapkan pemicu eksplisit di bawah menu pemicu yang mengirimkan info debug kepada Anda saat acara gagal atau jika tidak maka diam-diam akan gagal.
sumber
Ini jauh dari anggun, tetapi saat debugging, saya sering masuk ke Logger, dan kemudian menggunakan getLog () untuk mengambil isinya. Lalu, saya juga:
Pada dasarnya, itu hanya menjadi masalah keluaran JavaScript .
Itu sangat tidak memiliki fungsionalitas
console.log()
implementasi modern , tetapi Logger masih membantu debug Google Script.sumber
Sama seperti pemberitahuan. Saya membuat fungsi pengujian untuk spreadsheet saya. Saya menggunakan variabel google throws pada fungsi onEdit (e) (saya menyebutnya e). Lalu saya membuat fungsi tes seperti ini:
Memanggil fungsi tes ini membuat semua kode berjalan saat Anda memiliki acara di spreadsheet. Saya baru saja memasukkan sel yang saya edit dan whitch memberi saya hasil yang tidak terduga, menetapkan nilai sebagai nilai yang saya masukkan ke dalam sel. OBS! untuk lebih banyak variabel yang diberikan Google ke fungsi, buka di sini: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
sumber
Saat ini Anda terbatas pada sifat terikat wadah menggunakan skrip dalam dokumen. Jika Anda membuat skrip baru di dalam di luar dokumen maka Anda akan dapat mengekspor informasi ke google spreadsheet dan menggunakannya seperti alat pencatatan.
Misalnya di blok kode pertama Anda
Ketika saya bekerja dengan GAS, saya memiliki dua monitor (Anda dapat menggunakan dua jendela) yang diatur dengan satu berisi lingkungan GAS dan yang lainnya berisi SS sehingga saya dapat menulis informasi dan log.
sumber
Konsol dev akan mencatat kesalahan yang dilemparkan oleh skrip aplikasi, jadi Anda bisa membuang kesalahan untuk membuatnya masuk sebagai console.log normal. Ini akan menghentikan eksekusi, tetapi mungkin masih berguna untuk debugging langkah demi langkah.
akan muncul di konsol mirip dengan
console.log('hello world')
sumber
cukup debug kode spreadsheet Anda seperti ini:
acara seperti ini:
sumber
onEdit
)