zbiorcze przenoszenie identycznych skryptów z Rhino do V8;

Na tej stronie dowiesz się, jak przenieść identyczne skrypty do V8 za pomocą Apps Script i interfejsu Apps Script API.

Wszystkie skrypty, które korzystają ze środowiska wykonawczego Rhino, musisz przenieść, zanim zostanie ono wyłączone (co nastąpi 31 stycznia 2026 r. lub później). Jeśli masz wiele identycznych skryptów działających w środowisku Rhino, możesz przenieść je wszystkie do V8 za pomocą interfejsu Apps Script API.

Konfigurowanie środowiska

  1. W ustawieniach panelu Apps Script włącz interfejs Apps Script API.
    1. Otwórz ustawienia panelu Apps Script.
    2. Jeśli interfejs API jest wyłączony, kliknij 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 w Cloud skonfiguruj ekran zgody OAuth.
  4. W projekcie Cloud włącz interfejs Apps Script API.

    Włącz interfejs Apps Script API

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

    1. Utwórz samodzielny projekt Apps Script w 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.

Przenoszenie skryptów

Poniższy przykładowy kod pokazuje, jak za pomocą interfejsu Apps Script API przenieść identyczne skrypty z Rhino do V8, zastępując pliki w każdym projekcie Apps Script zestawem plików zgodnych z V8.

Sprawdź, czy masz co najmniej uprawnienia edytującego w przypadku projektów skryptów, które chcesz przenieść.

Code.gs

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!`);
    }
  });
}

appsscript.json

Aby używać interfejsu Apps Script API w projekcie Apps Script, musisz dodać do pliku manifestu te zakresy 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 znajdziesz przykładowy plik manifestu z odpowiednimi zakresami protokołu 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"
}