Di Apps Script dan JavaScript, lingkungan runtime atau runtime berisi mesin JavaScript yang mengurai dan mengeksekusi kode skrip. Runtime ini menyediakan aturan mengenai bagaimana memori diakses, bagaimana program dapat berinteraksi dengan sistem operasi komputer, dan sintaks program apa yang legal. Setiap web browser memiliki lingkungan runtime untuk JavaScript.
Sebelumnya, Apps Script telah didukung oleh Rhino JavaScript Mozilla penerjemahan mesin. Rhino menyediakan cara mudah untuk menjalankan Apps Script skrip developer, juga mengaitkan Apps Script dengan versi JavaScript tertentu (ES5). Developer Apps Script tidak dapat menggunakan fitur dan sintaksis JavaScript yang lebih modern dalam skrip menggunakan Rhino waktu beroperasi.
Untuk mengatasi kekhawatiran ini, Apps Script kini didukung oleh Runtime V8 yang mendukung Chrome dan Node.js. Anda dapat memigrasikan skrip yang ada ke V8 untuk memanfaatkan sintaks dan fitur JavaScript modern.
Halaman ini menjelaskan fitur baru yang diaktifkan oleh V8 dan cara mengaktifkan V8 untuk digunakan dalam skrip. Memigrasikan skrip ke V8 menjelaskan langkah-langkah untuk memigrasikan skrip yang ada agar menggunakan runtime V8.
Fitur runtime V8
Skrip yang menggunakan runtime V8 dapat memanfaatkan fitur:
Sintaksis ECMAScript modern
Anda dapat menggunakan ECMAScript modern
{i>syntax<i} dalam skrip yang
didukung oleh {i>runtime<i} V8. {i>Syntax<i} ini mencakup:
let
, const
, dan banyak fitur populer lainnya.
Lihat contoh sintaksis V8 untuk mengetahui daftar singkat skrip peningkatan sintaksis yang dapat Anda lakukan menggunakan runtime V8.
Peningkatan deteksi fungsi
Deteksi fungsi Apps Script ditingkatkan untuk skrip yang menggunakan V8. Yang baru runtime mengenali format definisi fungsi ini:
function normalFunction() {} async function asyncFunction() {} function* generatorFunction() {} var varFunction = function() {} let letFunction = function() {} const constFunction = function() {} var namedVarFunction = function alternateNameVarFunction() {} let namedLetFunction = function alternateNameLetFunction() {} const namedConstFunction = function alternateNameConstFunction() {} var varAsyncFunction = async function() {} let letAsyncFunction = async function() {} const constAsyncFunction = async function() {} var namedVarAsyncFunction = async function alternateNameVarAsyncFunction() {} let namedLetAsyncFunction = async function alternateNameLetAsyncFunction() {} const namedConstAsyncFunction = async function alternateNameConstAsyncFunction() {} var varGeneratorFunction = function*() {} let letGeneratorFunction = function*() {} const constGeneratorFunction = function*() {} var namedVarGeneratorFunction = function* alternateNameVarGeneratorFunction() {} let namedLetGeneratorFunction = function* alternateNameLetGeneratorFunction() {} const namedConstGeneratorFunction = function* alternateNameConstGeneratorFunction() {} var varLambda = () => {} let letLambda = () => {} const constLambda = () => {} var varAsyncLambda = async () => {} let letAsyncLambda = async () => {} const constAsyncLambda = async () => {}
Memanggil metode objek dari pemicu dan callback
Skrip yang menggunakan V8 dapat memanggil metode objek dan class metode statis dari tempat di mana Anda bisa memanggil metode library. Tempat-tempat ini mencakup berikut ini:
- Pemicu manifes Add-on Google Workspace
- Pemicu yang dapat diinstal
- Item menu di Google Workspace editor
- Fungsi callback pengguna, seperti yang dijelaskan dalam
Contoh kode
ScriptApp.newStateToken()
.
Contoh V8 berikut menunjukkan penggunaan metode objek saat menyusun di Google Sheets:
function onOpen() {
var ui = SpreadsheetApp.getUi(); // Or DocumentApp, SlidesApp, or FormApp.
ui.createMenu('Custom Menu')
.addItem('First item', 'menu.item1')
.addSeparator()
.addSubMenu(ui.createMenu('Sub-menu')
.addItem('Second item', 'menu.item2'))
.addToUi();
}
var menu = {
item1: function() {
SpreadsheetApp.getUi().alert('You clicked: First item');
},
item2: function() {
SpreadsheetApp.getUi().alert('You clicked: Second item');
}
}
Lihat log
Apps Script menyediakan dua layanan logging:
layanan Logger
dan
Class console
. Kedua layanan ini
menulis log ke metode
Layanan Stackdriver Logging.
Untuk menampilkan log Logger
dan console
, di bagian atas editor skrip, klik
Log eksekusi.
Lihat eksekusi
Untuk melihat histori eksekusi skrip, buka project Apps Script dan di di sebelah kiri, klik Executions
.Contoh sintaksis V8
Berikut ini adalah daftar singkat dari fitur sintaksis populer yang tersedia untuk skrip yang menggunakan runtime V8.
let
dan const
let
dan const
kata kunci memungkinkan Anda menentukan variabel lokal cakupan blok dan cakupan blok
konstanta, secara berurutan.
// V8 runtime let s = "hello"; if (s === "hello") { let s = "world"; console.log(s); // Prints "world" } console.log(s); // Prints "hello" const N = 100; N = 5; // Results in TypeError |
Fungsi panah
Fungsi panah menyediakan cara yang ringkas untuk menentukan fungsi dalam ekspresi.
// Rhino runtime function square(x) { return x * x; } console.log(square(5)); // Outputs 25 |
// V8 runtime const square = x => x * x; console.log(square(5)); // Outputs 25 // Outputs [1, 4, 9] console.log([1, 2, 3].map(x => x * x)); |
Class
Kelas menyediakan cara untuk secara konseptual mengatur kode dengan pewarisan. Kelas di V8 terutama adalah sugar sintaksis pada pewarisan berbasis prototipe JavaScript.
// V8 runtime class Rectangle { constructor(width, height) { // class constructor this.width = width; this.height = height; } logToConsole() { // class method console.log(`Rectangle(width=${this.width}, height=${this.height})`); } } const r = new Rectangle(10, 20); r.logToConsole(); // Outputs Rectangle(width=10, height=20) |
Tugas penguraian
Tugas penguraian ekspresi adalah cara cepat untuk mengekstrak nilai dari array dan objek ke dalam variabel yang berbeda.
// Rhino runtime var data = {a: 12, b: false, c: 'blue'}; var a = data.a; var c = data.c; console.log(a, c); // Outputs 12 "blue" var array = [1, 2, 3]; var x = a[0]; var y = a[1]; var z = a[2]; console.log(x, y, z); // Outputs 1 2 3 |
// V8 runtime var data = {a: 12, b: false, c: 'blue'}; var {a, c} = data; console.log(a, c); // Outputs 12 "blue" var array = [1, 2, 3]; var [x, y, z] = array; console.log(x, y, z); // Outputs 1 2 3 |
Literal template
Literal template adalah literal string yang memungkinkan ekspresi tersemat. Mereka membantu Anda menghindari pernyataan penyambungan {i>string<i} yang lebih kompleks.
// Rhino runtime var name = 'Hi ' + first + ' ' + last + '.'; var url = 'http://localhost:3000/api/messages/' + id; |
// V8 runtime var name = `Hi ${first} ${last}.`; var url = `http://localhost:3000/api/messages/${id}`; |
Parameter default
Parameter default memungkinkan Anda menentukan nilai default untuk parameter fungsi dalam fungsi deklarasi. Ini dapat menyederhanakan kode dalam isi fungsi karena menghilangkan perlu secara eksplisit menetapkan nilai {i> default<i} untuk parameter yang hilang.
// Rhino runtime function hello(greeting, name) { greeting = greeting || "hello"; name = name || "world"; console.log( greeting + " " + name + "!"); } hello(); // Outputs "hello world!" |
// V8 runtime var hello = function(greeting="hello", name="world") { console.log( greeting + " " + name + "!"); } hello(); // Outputs "hello world!" |
String multibaris
Anda dapat menentukan string multibaris menggunakan sintaksis yang sama dengan literal template. Seperti halnya dengan literal template, sintaksis ini memungkinkan Anda menghindari penggabungan string dan definisi string.
// Rhino runtime var multiline = "This string is sort of\n" + "like a multi-line string,\n" + "but it's not really one."; |
// V8 runtime var multiline = `This on the other hand, actually is a multi-line string, thanks to JavaScript ES6`; |
Mengaktifkan runtime V8
Jika skrip menggunakan {i>runtime<i} Rhino, Anda dapat mengubahnya ke V8 dengan dengan melakukan hal berikut:
- Buka project Apps Script.
- Di sebelah kiri, klik Project Settings .
- Centang kotak Aktifkan runtime Chrome V8.
Atau, Anda dapat menentukan runtime skrip secara langsung dengan mengedit manifes skrip file:
- Buka project Apps Script.
- Di sebelah kiri, klik Project Settings .
- Pilih kotak centang Tampilkan file manifes "appsscript.json" dalam editor.
- Di sebelah kiri, klik Editor
appsscript.json
>
- Dalam file manifes
appsscript.json
, setel atributruntimeVersion
ke nilaiV8
. - Di bagian atas, klik Simpan project .
Memigrasikan skrip ke V8 menjelaskan langkah lain yang harus Anda ambil untuk memastikan skrip Anda berfungsi dengan baik menggunakan V8.
Mengaktifkan runtime Rhino
Jika skrip Anda menggunakan V8 dan Anda perlu menggantinya untuk menggunakan versi aslinya Runtime Rhino, lakukan langkah berikut:
- Buka project Apps Script.
- Di sebelah kiri, klik Project Settings .
- Hapus centang pada kotak Enable Chrome V8 runtime.
Atau, edit manifes skrip Anda:
- Buka project Apps Script.
- Di sebelah kiri, klik Project Settings .
- Pilih kotak centang Tampilkan file manifes "appsscript.json" dalam editor.
- Di sebelah kiri, klik Editor
appsscript.json
>
- Dalam file manifes
appsscript.json
, setel atributruntimeVersion
ke nilaiDEPRECATED_ES5
. - Di bagian atas, klik Simpan project .
Bagaimana cara memigrasikan skrip yang sudah ada?
Memigrasikan skrip ke V8 menjelaskan langkah-langkah yang perlu Anda ambil untuk memigrasikan skrip yang ada ke gunakan V8. Langkah ini termasuk mengaktifkan {i>runtime<i} V8 dan memeriksa skrip untuk setiap inkompatibilitas yang diketahui.
Migrasi skrip otomatis ke V8
Mulai 18 Februari 2020, Google akan secara bertahap memigrasikan data yang ada yang lulus uji kompatibilitas otomatis kami pada V8. Skrip yang terpengaruh terus berfungsi secara normal setelah migrasi.
Jika Anda ingin mengecualikan skrip dari migrasi otomatis, setel
runtimeVersion
dalam manifesnya menjadi DEPRECATED_ES5
. Anda dapat memilih
untuk secara manual
memigrasikan skrip ke V8 kapan saja
waktu setelahnya.
Bagaimana cara melaporkan bug?
Panduan dukungan menjelaskan cara mendapatkan pemrograman bantuan di Stack Overflow, telusuri laporan masalah yang ada, laporkan bug baru, dan membuat permintaan fitur baru.