Apps Komut Dosyası ve JavaScript'te, bir çalışma zamanı veya çalışma zamanı ortamı şunları içerir: komut dosyası kodunu ayrıştıran ve yürüten JavaScript motoru. Çalışma zamanı, nasıl erişileceğine, programın bellekle nasıl etkileşime girebileceğine ve program söz diziminin yasal olduğunu gösterir. Her bir web tarayıcının JavaScript için çalışma zamanı ortamına sahip olduğundan emin olun.
Apps Komut Dosyası geçmişte Mozilla'nın Rhino JavaScript'i ve kullanabilirsiniz. Rhino ise Apps Komut Dosyası'nın yürütülmesi için çalıştırdıktan sonra, aynı zamanda Apps Komut Dosyası'nı belirli bir JavaScript sürümüne (ES5). Apps Komut Dosyası geliştiricileri Rhino kullanılarak komut dosyalarında daha modern JavaScript söz dizimi ve özellikleri kullanılamaz belirler.
Bu sorunu çözmek için Apps Komut Dosyası artık Chrome ve Node.js'yi destekleyen V8 çalışma zamanı. Şunları yapabilirsiniz: mevcut komut dosyalarını V8'e taşıma .
Bu sayfada, V8 tarafından etkinleştirilen yeni özellikler ve V8'i nasıl etkinleştirebileceğiniz açıklanmaktadır. komut dosyalarınızda kullanmak üzere. Komut dosyalarını V8'e taşıma mevcut komut dosyalarını V8 çalışma zamanını kullanacak şekilde taşıma adımlarını açıklar.
V8 çalışma zamanının özellikleri
V8 çalışma zamanını kullanan komut dosyaları aşağıdakilerden yararlanabilir özellikler:
Modern ECMAScript söz dizimi
Modern ECMAScript'i kullanabilirsiniz
V8 çalışma zamanı tarafından desteklenen komut dosyalarındaki söz dizimini kullanmalıdır. Bu söz dizimi şunları içerir:
let
, const
ve diğer birçok popüler özellik.
Popülerliğin kısa bir listesi için V8 söz dizimi örneklerine bakın söz dizimi iyileştirmelerinden bahsedeceğiz.
İyileştirilmiş işlev algılama
V8 kullanan komut dosyaları için Apps Komut Dosyası işlevi algılama iyileştirildi. Yeni çalışma zamanı şu işlev tanımı biçimlerini tanır:
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 () => {}
Tetikleyicilerden ve geri çağırmalardan nesne yöntemlerini çağırma
V8 kullanan komut dosyaları, yerlerden nesne yöntemlerini ve sınıf statik yöntemlerini çağırabilir burada zaten kitaplık yöntemlerini çağırabilirsiniz. Bu yerler arasında şunlar bulunur: takip etmek için:
- Google Workspace Eklentileri manifest tetikleyicileri
- Yüklenebilir tetikleyiciler
- Düzenleyicilerdeki Google Workspace menü öğeleri
-
ScriptApp.newStateToken()
kod örneği.
Aşağıdaki V8 örneği, URL'yi oluştururken nesne yöntemlerinin Google E-Tablolar'daki menü öğeleri:
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');
}
}
Günlükleri göster
Apps Komut Dosyası iki günlük kaydı hizmeti sağlar:
Logger
hizmeti ve
console
sınıf. Bu hizmetlerin her ikisi de
günlükleri aynı dosyaya yaz
Stackdriver Logging hizmeti.
Logger
ve console
günlüklerini göstermek için komut dosyası düzenleyicisinin üst kısmındaki
Yürütme günlüğü.
Yürütmeleri göster
Komut dosyanızın yürütme geçmişini görüntülemek için Apps Komut Dosyası projesini açın ve sol tarafta, Yürütmeler'i
tıklayın.V8 söz dizimi örnekleri
Aşağıda, Google Analytics 4'te erişebileceğiniz popüler söz dizimsel özelliklerin komut dosyalarını çalıştırmanız gerekir.
let
ve const
let
ve const
anahtar kelimeler, blok kapsamı yerel değişkenlerini ve blok kapsamı tanımlamanıza olanak tanır
sabit değerleri gösterir.
// 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 |
Ok işlevleri
Ok işlevleri ifadelerin içindeki işlevleri tanımlamanın kompakt bir yolunu sunar.
// 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)); |
Sınıflar
Sınıflar kalıtım yoluyla kodu kavramsal olarak düzenlemek için bir araç sağlar. V8'deki Sınıflar JavaScript prototipine dayalı kalıtıma göre öncelikli olarak söz dizimseldir.
// 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) |
Atamaları kaldırma
Ödevi kaldırma ifadeler, dizi ve nesnelerdeki değerleri açıp açmanın kullanabilirsiniz.
// 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 |
Şablon değişmez değerleri
Şablon değişmez değerleri yerleştirilmiş ifadelere izin veren dize değişmez değerleridir. Önünüzdeki projelerde dize birleştirme ifadeleri kullanın.
// 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}`; |
Varsayılan parametreler
Varsayılan parametreler fonksiyondaki işlev parametreleri için varsayılan değerler belirtebilmenizi sağlar. beyanı. Bu, fonksiyon gövdesindeki kodu basitleştirebilir çünkü eksik parametrelere varsayılan değerleri açıkça atamanız gerekiyor.
// 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!" |
Çok satırlı dizeler
Anahtar kelimelerin çok satırlı dizeler sabit şablon değerleriyle aynı söz dizimini kullanın. Olduğu gibi bu söz dizimi, dizelerin birbirine bağlanmasını önlemenizi ve dizelerin birbirine bağlanmasını dize tanımları.
// 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`; |
V8 çalışma zamanını etkinleştirme
Bir komut dosyası Rhino çalışma zamanını kullanıyorsa bunu yapmak için komut dosyasını V8'e şunları yapabilirsiniz:
- Apps Komut Dosyası projesini açın.
- Solda Proje Ayarları'nı tıklayın.
- Chrome V8 çalışma zamanını etkinleştir onay kutusunu seçin.
Alternatif olarak, komut dosyası çalışma zamanını doğrudan komut dosyası manifestini düzenleme dosya:
- Apps Komut Dosyası projesini açın.
- Solda Proje Ayarları'nı tıklayın.
- Show "appsscript.json" dosyasını seçin. manifest dosyası düzenleyicide onay kutusunu işaretleyin.
- Sol tarafta Düzenleyici'yi
appsscript.json
tıklayın >
appsscript.json
manifest dosyasındaruntimeVersion
alanınaV8
değerini ekleyin.- En üstte, Projeyi kaydet'i tıklayın.
Komut dosyalarını V8'e taşıma açıklaması komut dosyanızın V8 kullanarak iyi bir şekilde çalıştığından emin olmak için atmanız gereken diğer adımlar hakkında bilgi vermek istiyorum.
Rhino çalışma zamanını etkinleştirme
Komut dosyanız V8 kullanıyorsa ve orijinal dosyayı kullanmak için değiştirmeniz gerekiyorsa Rhino çalışırken aşağıdaki adımları uygulayın:
- Apps Komut Dosyası projesini açın.
- Solda Proje Ayarları'nı tıklayın.
- Chrome V8 çalışma zamanını etkinleştir onay kutusunun işaretini kaldırın.
Alternatif olarak, komut dosyası manifestinizi düzenleyin:
- Apps Komut Dosyası projesini açın.
- Solda Proje Ayarları'nı tıklayın.
- Show "appsscript.json" dosyasını seçin. manifest dosyası düzenleyicide onay kutusunu işaretleyin.
- Sol tarafta Düzenleyici'yi
appsscript.json
tıklayın >
appsscript.json
manifest dosyasındaruntimeVersion
alanınaDEPRECATED_ES5
değerini ekleyin.- En üstte, Projeyi kaydet'i tıklayın.
Mevcut komut dosyalarını nasıl taşıyabilirim?
Komut dosyalarını V8'e taşıma kılavuzunda mevcut bir komut dosyasını V8 kullanın. Bu işlem, V8 çalışma zamanını etkinleştirmeyi ve komut dosyasını kontrol uyumsuzlukları gidermeyi deneyin.
Komut dosyalarını V8'e otomatik taşıma
18 Şubat 2020'den itibaren Google, mevcut öğeleri kademeli olarak taşımaya başlayacak geçen komut dosyalarını V8'e göndermektir. Etkilenen komut dosyaları taşıma işleminden sonra normal şekilde çalışmaya devam eder.
Bir komut dosyasını otomatik taşımanın kapsamı dışında bırakmak istiyorsanız
runtimeVersion
alanını DEPRECATED_ES5
olarak ayarlayın. Dilerseniz
komut dosyasını V8'e taşıyabilirsiniz
daha fazla bilgi edineceksiniz.
Hataları nasıl bildirebilirim?
Destek kılavuzunda, programlamanın nasıl alınacağı açıklanmaktadır. Stack Overflow konusunda yardım, mevcut sorun raporlarında arama yapabilir, yeni hataları bildirebilir ve yeni özellik isteğinde bulunabilirsiniz.