Saya sangat baru dalam pemrograman (telah mengambil beberapa kursus JS di Codecademy). Saya mencoba membuat skrip sederhana untuk menentukan, jika diberi spreadsheet dengan hasil dari permainan poker, siapa yang harus membayar siapa. Saya membuka Google Apps Script, dan menulis yang berikut ini untuk memulai:
function addplayerstoArray(numplayers) {
var playerArray = [];
for (i=0; i<numplayers; i++) {
playerArray.push(i);
}
}
addplayerstoArray(7);
console.log(playerArray[3])
Idenya adalah membuat larik dengan jumlah total pemain di dalamnya. Saat menjalankan kode, saya pikir itu akan mencetak "3" ke konsol. Tetapi tidak ada yang terjadi. Itu berkata
"ReferenceError:" console "tidak ditentukan."
A) Apa yang tidak saya mengerti tentang cara kerja Konsol Skrip Google Apps terkait dengan pencetakan sehingga saya dapat melihat apakah kode saya mencapai apa yang saya inginkan?
B) Apakah ada masalah dengan kode?
sumber
Hanya untuk membangun solusi hacky vinnief di atas, saya menggunakan MsgBox seperti ini:
Browser.msgBox('BorderoToMatriz', Browser.Buttons.OK_CANCEL);
dan berfungsi seperti break point, menghentikan skrip dan mengeluarkan string apa pun yang Anda butuhkan ke kotak pop-up. Saya menemukan terutama di Sheets, di mana saya mengalami masalah dengan Logger.log, ini memberikan solusi yang memadai hampir setiap kali.
sumber
Meskipun
Logger.log()
secara teknis adalah cara yang benar untuk mengeluarkan sesuatu ke konsol, ada beberapa gangguan:Logger.log(playerArray)
, dan kemudian setelah debugging Anda mungkin ingin menghapusLogger.log(playerArray)
, maka tambahan 1-2 langkah lagi.Sebaliknya, setiap kali saya ingin men-debug sesuatu, saya menambahkan breakpoint (klik pada nomor baris) dan tekan tombol Debug (ikon bug). Breakpoint bekerja dengan baik ketika Anda menetapkan sesuatu ke variabel, tetapi tidak begitu baik ketika Anda memulai variabel dan ingin mengintip ke dalamnya nanti, yang mirip dengan apa yang op coba lakukan. Dalam kasus ini, saya akan memaksa kondisi istirahat dengan memasukkan "x" (x menandai tempat!) Untuk memunculkan kesalahan waktu proses:
Bandingkan dengan melihat Log:
Konsol Debug berisi lebih banyak informasi dan jauh lebih mudah dibaca daripada hamparan Log. Satu keuntungan kecil dengan metode ini adalah Anda tidak perlu khawatir mencemari kode Anda dengan banyak perintah logging jika menjaga kode tetap bersih adalah hal Anda. Bahkan jika Anda memasukkan "x", Anda dipaksa untuk mengingat untuk menghapusnya sebagai bagian dari proses debugging atau kode Anda tidak akan berjalan (built-in cleanup measure, yay).
sumber
x
akan menjadi fungsi yang sama seperti menambahkandebugger;
Menjawab pertanyaan OP
Kode pada file .gs dari proyek Skrip Google Apps dijalankan di server, bukan di browser web. Cara untuk mencatat pesan adalah dengan menggunakan Class Logger .
Seperti yang dikatakan pesan kesalahan, masalahnya adalah
console
itu tidak ditentukan tetapi saat ini kode yang sama akan memunculkan kesalahan lain:Itu karena playerArray didefinisikan sebagai variabel lokal. Memindahkan garis keluar dari fungsi akan menyelesaikan masalah ini.
var playerArray = []; function addplayerstoArray(numplayers) { for (i=0; i<numplayers; i++) { playerArray.push(i); } } addplayerstoArray(7); console.log(playerArray[3])
Sekarang kode dijalankan tanpa menimbulkan error, sebagai gantinya untuk melihat konsol browser, kita harus melihat Stackdriver Logging. Dari UI editor Google Apps Script, klik Tampilan> Stackdriver Logging .
Tambahan
Pada 2017 Google merilis ke semua skrip Stackdriver Logging dan menambahkan Konsol Kelas, jadi termasuk sesuatu seperti
console.log('Hello world!')
tidak akan menimbulkan kesalahan tetapi log akan ada di Layanan Logging Stackdriver Google Cloud Platform, bukan konsol browser.Dari Catatan Rilis Skrip Google Apps 2017
Dari Logging> Stackdriver logging
sumber
Dalam proyek skrip google Anda dapat membuat file html (contoh: index.html) atau file gs (contoh: code.gs). File .gs dijalankan di server dan Anda dapat menggunakan Logger.log seperti yang dijelaskan oleh @Peter Herrman. Namun jika fungsi dibuat dalam file .html, itu sedang dijalankan di browser pengguna dan Anda dapat menggunakan console.log. Konsol browser Chrome dapat dilihat dengan Ctrl Shift J di Windows / Linux atau Cmd Opt J di Mac
Jika Anda ingin menggunakan Logger.log pada file html, Anda dapat menggunakan scriptlet untuk memanggil fungsi Logger.log dari file html. Untuk melakukannya, Anda akan memasukkan <? Logger.log (sesuatu)?> Mengganti sesuatu dengan apapun yang ingin Anda catat. Scriptlet standar, yang menggunakan sintaks <? ...?>, jalankan kode tanpa secara eksplisit mengeluarkan konten ke halaman.
sumber
Diperbarui untuk 2020
Pada bulan Februari 2020, Google mengumumkan peningkatan besar - besaran ke Google Apps Script IDE bawaan, dan sekarang mendukung console.log () . Jadi, Anda sekarang dapat menggunakan keduanya:
Selamat membuat kode!
sumber
console.log
didukung sebelum peningkatan yang dirujuk (lihat jawaban saya )