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

Nesta página, descrevemos como migrar scripts idênticos para o V8 usando o Apps Script e a API Apps Script.

Migre todos os scripts que usam o ambiente de execução do Rhino antes que ele seja desativado, o que vai acontecer em 31 de janeiro de 2026 ou depois dessa data. Se você tiver vários scripts idênticos em execução no Rhino, poderá migrar todos 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 Google Apps Script e ative a opção.
  2. Crie um projeto padrão do Google Cloud ou reutilize um projeto atual.
  3. No seu projeto do Google Cloud, configure a tela de consentimento do OAuth.
  4. No 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 acessando script.new.
    2. Clique em Configurações do projeto O í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 planeja migrar.

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

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 mostrar o arquivo de manifesto no editor, clique em Configurações do projeto O ícone das configurações do projeto e marque a caixa Mostrar arquivo de manifesto "appsscript.json" no editor. Confira a seguir um exemplo de arquivo de manifesto com os escopos do 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"
}