W Apps Script i JavaScript środowisko wykonawcze lub środowisko wykonawcze zawiera czyli silnik JavaScript, który analizuje i wykonuje kod skryptu. Środowisko wykonawcze zapewnia dotyczące dostępu do pamięci, sposobu interakcji programu z pamięcią system operacyjny komputera i jaka składnia programu jest legalna. W każdej sieci przeglądarka ma środowisko wykonawcze dla JavaScriptu.
W przeszłości Apps Script opierał się na języku JavaScript Rhino firmy Mozilla tłumaczem ustnym. Z kolei Rhino zapewnił wygodny sposób wykonywania skryptów Apps Script. skryptów programisty, a także powiązać Apps Script z konkretną wersją JavaScriptu. (ES5). Programiści Apps Script nie może używać bardziej nowoczesnej składni ani funkcji JavaScript w skryptach używających Rhino. w środowisku wykonawczym.
Aby rozwiązać ten problem, program Apps Script jest teraz obsługiwany przez Środowisko wykonawcze V8, które obsługuje Chrome i Node.js. Dostępne opcje migracja istniejących skryptów do wersji 8 do wykorzystania nowoczesnej składni i funkcji JavaScriptu.
Na tej stronie opisujemy nowe funkcje dostępne w V8 i sposób ich włączenia których użyjesz w skryptach. Migracja skryptów do wersji 8 zawiera opis czynności migracji istniejących skryptów do środowiska wykonawczego V8.
Funkcje środowiska wykonawczego V8
Skrypty korzystające ze środowiska wykonawczego V8 mogą korzystać z następujących funkcje:
Nowoczesna składnia ECMAScript
Możesz używać nowoczesnego ECMAScript
w skryptach obsługiwanych przez środowisko wykonawcze V8. Ta składnia obejmuje
let
, const
i wiele innych popularnych funkcji.
Zapoznaj się z przykładami składni V8, aby zobaczyć krótką listę popularnych nazw ulepszenia składni, które można wprowadzić za pomocą środowiska wykonawczego V8.
Ulepszone wykrywanie funkcji
Wykrywanie funkcji Apps Script zostało ulepszone w przypadku skryptów korzystających z wersji 8. Nowy środowisko wykonawcze rozpoznaje te formaty definicji funkcji:
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 () => {}
Wywołuj metody obiektów z aktywatorów i wywołań zwrotnych
Skrypty używające V8 mogą wywoływać metody obiektów i klasy statyczne metody z miejsc gdzie można było wywoływać metody biblioteki. Miejsca te to m.in. :
- Reguły w pliku manifestu dodatków do Google Workspace
- Aktywatory instalacyjne
- Pozycje menu w Google Workspace edytorach
- funkcji wywołania zwrotnego użytkownika, takich jak ta opisana w
Przykładowy kod w usłudze
ScriptApp.newStateToken()
Poniższy przykład w V8 pokazuje wykorzystanie metod obiektów podczas konstruowania pozycje menu w Arkuszach Google:
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');
}
}
Wyświetl logi
Apps Script udostępnia 2 usługi logowania:
usługa Logger
oraz
console
zajęcia. Obie te usługi
zapisz logi na tym samym
usługę Stackdriver Logging.
Aby wyświetlić logi Logger
i console
, u góry edytora skryptów kliknij
Dziennik wykonywania.
Wyświetl uruchomienia
Aby wyświetlić historię wykonywania skryptu, otwórz projekt Apps Script i pod adresem Po lewej stronie kliknij Uruchomienia
.Przykłady składni V8
Oto krótka lista popularnych funkcji składniowych dostępnych w używające środowiska wykonawczego V8.
let
i const
let
i const
słowa kluczowe umożliwiają definiowanie zmiennych lokalnych i zakresu bloku
wartości stałe.
// 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 |
Funkcje strzałek
Funkcje strzałek pozwalają w kompaktowy sposób definiować funkcje w wyrażeniach.
// 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)); |
Zajęcia
Zajęcia zapewniają sposób koncepcyjnego porządkowania kodu przez dziedziczenie. Klasy w V8 są głównie cukrem syntaktycznym zamiast dziedziczenia opartego na prototypie 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) |
Niszczenie przypisań
Zniszczenie przypisania Wyrażenia to szybki sposób na rozpakowywanie wartości z tablic i obiektów dla różnych zmiennych.
// 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 |
Literały szablonów
Literały szablonów to literały łańcuchowe, które pozwalają na osadzone wyrażenia. Pozwalają uniknąć bardziej złożonych instrukcji łączenia ciągów znaków.
// 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}`; |
Parametry domyślne
Parametry domyślne pozwalają określić domyślne wartości parametrów funkcji w funkcji tej deklaracji. Może to uprościć kod w treści funkcji, ponieważ usuwa on przypisać wartości domyślne do brakujących parametrów.
// 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!" |
Ciągi wielowierszowe
Możesz zdefiniować ciągi wielowierszowe używając tej samej składni co literały szablonu. Tak jak literały szablonów, ta składnia pozwala uniknąć łączenia ciągów znaków i upraszcza definicje ciągów tekstowych.
// 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`; |
Włączam środowisko wykonawcze V8
Jeśli skrypt korzysta ze środowiska wykonawczego Rhino, możesz przełączyć go na V8 przez wykonując te czynności:
- Otwórz projekt Apps Script.
- Po lewej stronie kliknij Ustawienia projektu .
- Zaznacz pole wyboru Włącz środowisko wykonawcze Chrome 8.
Możesz też określić środowisko wykonawcze skryptu bezpośrednio przez edytowanie pliku manifestu skryptu plik:
- Otwórz projekt Apps Script.
- Po lewej stronie kliknij Ustawienia projektu .
- Zaznacz pole wyboru Pokaż plik „appsscript.json”. plik manifestu w edytorze.
- Po lewej stronie kliknij Edytor
appsscript.json
>
- W pliku manifestu
appsscript.json
ustawruntimeVersion
. na wartośćV8
. - U góry kliknij Zapisz projekt .
Wyjaśnienia dotyczące migracji skryptów do wersji 8 oraz inne działania, które pomogą zapewnić prawidłowe działanie skryptu w wersji 8.
Włączanie środowiska wykonawczego Rhino
Jeśli Twój skrypt korzysta z wersji V8 i musisz przełączyć ją na wersję oryginalną W środowisku wykonawczym Rhino wykonaj te czynności:
- Otwórz projekt Apps Script.
- Po lewej stronie kliknij Ustawienia projektu .
- Odznacz pole wyboru Włącz środowisko wykonawcze Chrome 8.
Możesz też edytować plik manifestu skryptu:
- Otwórz projekt Apps Script.
- Po lewej stronie kliknij Ustawienia projektu .
- Zaznacz pole wyboru Pokaż plik „appsscript.json”. plik manifestu w edytorze.
- Po lewej stronie kliknij Edytor
appsscript.json
>
- W pliku manifestu
appsscript.json
ustawruntimeVersion
. na wartośćDEPRECATED_ES5
. - U góry kliknij Zapisz projekt .
Jak przenieść istniejące skrypty?
Migracja skryptów do wersji 8 z opisem czynności, jakie należy wykonać, aby przenieść istniejący skrypt do należy używać wersji 8. Wymaga to włączenia środowiska wykonawczego V8 i sprawdzenia skryptu pod kątem wszystkich znanych niezgodności.
Automatyczna migracja skryptów do wersji 8
Od 18 lutego 2020 roku Google rozpocznie stopniową migrację istniejących skryptów, które przechodzą nasz zautomatyzowany test zgodności do wersji 8. skrypty, których dotyczy problem; po migracji będą działać normalnie.
Jeśli chcesz wyłączyć automatyczną migrację skryptu, ustaw parametr
runtimeVersion
w pliku manifestu do DEPRECATED_ES5
. Możesz ręcznie
przeniesie skrypt do wersji V8 w dowolnym momencie
później.
Jak zgłaszać błędy?
Przeczytaj przewodnik pomocy, aby dowiedzieć się, jak zacząć programować. uzyskać pomoc w Stack Overflow, wyszukać istniejące raporty o problemach, zgłaszać nowe błędy przesyłać prośby o dodanie funkcji.