zbiorcze przenoszenie identycznych skryptów z Rhino do V8;

Na tej stronie opisaliśmy, jak przenieść identyczne skrypty do wersji 8 za pomocą Apps Script i interfejsu Apps Script API.

Wszystkie skrypty korzystające z środowiska wykonawczego Rhino musisz przenieść przed wyłączeniem Rhino, które nastąpi 31 stycznia 2026 roku lub później. Jeśli masz wiele identycznych skryptów działających w Rhino, możesz je wszystkie przenieść do V8 za pomocą interfejsu Apps Script API.

Konfigurowanie środowiska

  1. W ustawieniach panelu sterowania Apps Script włącz interfejs Apps Script API.
    1. Otwórz ustawienia panelu Apps Script.
    2. Jeśli interfejs API jest wyłączony, kliknij Interfejs Google Apps Script API, a następnie włącz przełącznik interfejsu Google Apps Script API.
  2. Utwórz standardowy projekt Google Cloud lub użyj istniejącego projektu.
  3. W projekcie Cloud skonfiguruj ekran zgody OAuth.
  4. W projekcie Cloud włącz interfejs Apps Script API.

    Włączanie interfejsu Apps Script API

  5. Utwórz projekt Apps Script i przypisz go do projektu Cloud.

    1. Utwórz samodzielny projekt Apps Script na panelu Apps Script lub na stronie script.new.
    2. Kliknij Ustawienia projektu Ikona ustawień projektu.
    3. W sekcji Projekt Google Cloud Platform (GCP) kliknij Zmień projekt.
    4. Wpisz numer projektu Cloud.
    5. Kliknij Ustaw projekt.

Migracja skryptów

Poniższy przykładowy kod pokazuje, jak za pomocą interfejsu Apps Script API przenieść identyczne skrypty ze środowiska wykonawczego Rhino do środowiska V8. W tym celu należy zastąpić pliki w każdym projekcie Apps Script zestawem plików zgodnych z V8.

Upewnij się, że masz co najmniej uprawnienia edytujące w projektach skryptów, które chcesz przenieść.

function updateRhinoScripts() {
  // An array of script IDs of script projects to migrate.
  // TODO(developer): Replace with your script IDs.
  const scriptIds = ['abcdef12345678', 'abcdef12345678'];
  // An array of file objects to replace the existing files in each script project.
  // Remember to include all files for the script, excluded files are deleted.
  // TODO(developer): Replace with your script files.
  const filesToUpdate = {
    "files": [
      {
        "name": "Code",
        "type": "SERVER_JS",
        "source": "// New updates\nfunction myFunction() {\n  console.log('Hello, world!');\n}"
      },
      {
        "name": "appsscript",
        "type": "JSON",
        "source": JSON.stringify({
          "timeZone": "America/New_York",
          "dependencies": {},
          "exceptionLogging": "STACKDRIVER",
          "runtimeVersion": "V8"
        })
      }
    ]
  };
  updateMultipleAppsScripts(scriptIds, filesToUpdate);
}

function updateMultipleAppsScripts(scriptIds, filesToUpdate) {
  // 'scriptIds' should be an array of script IDs
  // 'filesToUpdate' should be an array of objects, each with:
  // name: The filename (For example, "Code", "Utilities")
  // source: The source code for that file.
  scriptIds.forEach(function (scriptId) {
    // Makes the API request.
    const response = UrlFetchApp.fetch(
      `https://script.googleapis.com/v1/projects/${scriptId}/content`,
      {
        method: "PUT",
        headers: {
          Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
        },
        contentType: "application/json",
        payload: JSON.stringify(filesToUpdate),
        muteHttpExceptions: true
      }
    );
    if (response.getResponseCode() !== 200) {
      console.log(`Error updating script ${scriptId}: ${response.getContentText()}`);
    } else {
      console.log(`Script ${scriptId} updated successfully!`);
    }
  });
}

Aby używać interfejsu Apps Script API w projekcie Apps Script, musisz dodać do pliku manifestu te zakresy uprawnień OAuth:

  • "https://www.googleapis.com/auth/script.projects"
  • "https://www.googleapis.com/auth/script.external_request"

Aby wyświetlić plik manifestu w edytorze, kliknij Ustawienia projektu Ikona ustawień projektu i zaznacz pole Wyświetlaj plik manifestu „appsscript.json” w edytorze. Poniżej znajduje się przykładowy plik manifestu z odpowiednimi zakresami uprawnień OAuth:

{
  "timeZone": "America/Denver",
  "dependencies": {
  },
  "oauthScopes": [
  "https://www.googleapis.com/auth/script.projects",
  "https://www.googleapis.com/auth/script.external_request"
],
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}