Migrar scripts idênticos em massa do Rhino para o V8

Esta página descreve como migrar scripts idênticos para o V8 usando o Apps Script e a API Apps Script.

É necessário migrar todos os scripts que usam o ambiente de execução do Rhino antes que ele seja desativado, o que vai acontecer em ou após 31 de janeiro de 2026. Se você tiver vários scripts idênticos executados no Rhino, poderá migrá-los para o V8 usando a API Apps Script.

Configurar o ambiente

  1. Nas configurações do painel do Apps Script, ative a API Apps Script.
    1. Acesse as Configurações do painel do Apps Script.
    2. Se a API estiver desativada, clique em API Apps Script e ative a chave da API Apps Script.
  2. Crie um projeto padrão do Google Cloud ou reutilize um projeto atual.
  3. No seu projeto do Cloud, configure a tela de consentimento do OAuth.
  4. No seu projeto do Cloud, ative a API Apps Script.

    Ativar a API Apps Script

  5. Crie um projeto do Apps Script e atribua-o ao seu projeto do Cloud.

    1. Crie um projeto independente do Apps Script no painel do Apps Script ou acesse script.new.
    2. Clique em Configurações do projeto Ícone das configurações do projeto.
    3. Na seção Projeto do Google Cloud Platform (GCP), clique em Mudar projeto.
    4. Digite o número do projeto do Cloud.
    5. Clique em Configurar projeto.

Migrar scripts

O exemplo de código a seguir mostra como usar a API Apps Script para migrar scripts idênticos do Rhino para o V8 substituindo os arquivos em cada projeto do Apps Script por um conjunto de arquivos compatíveis com o V8.

Verifique se você tem pelo menos acesso de editor aos projetos de script que pretende migrar.

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

Para usar a API Apps Script no seu projeto do Apps Script, adicione os seguintes escopos do OAuth ao arquivo de manifesto:

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

Para expor o arquivo de manifesto no editor, clique em Project Settings Ícone das configurações do projeto e marque a caixa Show "appsscript.json" manifest file in editor. Confira abaixo um exemplo de arquivo de manifesto com os escopos OAuth adequados:

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