Guía de inicio rápido de Java

Las guías de inicio rápido explican cómo configurar y ejecutar una app que llama a un API de Google Workspace.

Las guías de inicio rápido de Google Workspace usan las bibliotecas cliente de la API para controlar algunas los detalles del flujo de autenticación y autorización. Te recomendamos lo siguiente: usas las bibliotecas cliente para tus propias apps. En esta guía de inicio rápido, se usa un de autenticación simplificado, adecuado para realizar pruebas en un entorno de nube. Para un entorno de producción, recomendamos conocer autenticación y autorización antes de elige las credenciales de acceso que sean adecuados para tu app.

Crear una aplicación de línea de comandos de Java que realice solicitudes a la API de Google Apps Script

Objetivos

  • Configurar el entorno
  • Configura la muestra.
  • Ejecuta la muestra.

Requisitos previos

  • Una Cuenta de Google con Google Drive habilitado

Configura tu entorno

Para completar esta guía de inicio rápido, configura tu entorno.

Habilita la API

Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud. Puedes activar una o más APIs en un solo proyecto de Google Cloud.
  • En la consola de Google Cloud, habilita la API de Google Apps Script.

    Habilitar la API

Si usas un proyecto de Google Cloud nuevo para completar esta guía de inicio rápido, configura la pantalla de consentimiento de OAuth y agrégate como usuario de prueba. Si ya has completaste este paso para tu proyecto de Cloud, ve a la siguiente sección.

  1. En la consola de Google Cloud, ve a Menú > APIs y Servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. En Tipo de usuario, selecciona Interno y, luego, haz clic en Crear.
  3. Completa el formulario de registro de la aplicación y, luego, haz clic en Guardar y continuar.
  4. Por ahora, puedes omitir el paso de agregar permisos y hacer clic en Guardar y continuar. En el futuro, cuando crees una app para usarla fuera de tu organización de Google Workspace, debes cambiar el Tipo de usuario a Externo y, luego, agregar los permisos de autorización que requiere tu app.

  5. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si la aplicación el registro parece estar bien, haz clic en Volver al panel.

Autoriza credenciales para una aplicación de escritorio

Para autenticar usuarios finales y acceder a sus datos en tu app, debes hacer lo siguiente: crear uno o más IDs de cliente de OAuth 2.0. Un ID de cliente se usa con el fin de identificar una sola app para los servidores de OAuth de Google. Si tu app se ejecuta en varias plataformas, debes crear un ID de cliente independiente para cada una.
  1. En la consola de Google Cloud, ve a Menú > APIs y Servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  3. Haz clic en Tipo de aplicación > Aplicación para computadoras.
  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
  5. Haz clic en Crear. Aparecerá la pantalla de creación del cliente de OAuth, en la que se mostrará tu nuevo ID de cliente y secreto del cliente.
  6. Haz clic en Aceptar. La credencial creada recientemente aparece en ID de cliente de OAuth 2.0.
  7. Guarda el archivo JSON descargado como credentials.json y mueve el en tu directorio de trabajo.

Prepara el lugar de trabajo

  1. En tu directorio de trabajo, crea una nueva estructura de proyecto:

    gradle init --type basic
    mkdir -p src/main/java src/main/resources 
    
  2. En el directorio src/main/resources/, copia el archivo credentials.json. que descargaste anteriormente.

  3. Abre el archivo build.gradle predeterminado y reemplaza su contenido por el siguiente código:

    appsScript/quickstart/build.gradle
    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'AppsScriptQuickstart'
    sourceCompatibility = 11
    targetCompatibility = 11
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.api-client:google-api-client:2.0.0'
        implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1'
        implementation 'com.google.apis:google-api-services-script:v1-rev20220323-2.0.0'
    }

Configura la muestra

  1. En el directorio src/main/java/, crea un archivo Java nuevo con un nombre que coincida con el valor mainClassName en tu archivo build.gradle.

  2. Incluye el siguiente código en tu nuevo archivo Java:

    appsScript/quickstart/src/main/java/AppsScriptQuickstart.java
    import com.google.api.client.auth.oauth2.Credential;
    import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
    import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
    import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
    import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
    import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.JsonFactory;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.client.util.store.FileDataStoreFactory;
    import com.google.api.services.script.Script;
    import com.google.api.services.script.model.Content;
    import com.google.api.services.script.model.CreateProjectRequest;
    import com.google.api.services.script.model.File;
    import com.google.api.services.script.model.Project;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.GeneralSecurityException;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class AppsScriptQuickstart {
      private static final String APPLICATION_NAME = "Apps Script API Java Quickstart";
      private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
      private static final String TOKENS_DIRECTORY_PATH = "tokens";
    
      /**
       * Global instance of the scopes required by this quickstart.
       * If modifying these scopes, delete your previously saved credentials folder at /secret.
       */
      private static final List<String> SCOPES =
          Collections.singletonList("https://www.googleapis.com/auth/script.projects");
      private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
    
      /**
       * Creates an authorized Credential object.
       *
       * @param HTTP_TRANSPORT The network HTTP Transport.
       * @return An authorized Credential object.
       * @throws IOException If the credentials.json file cannot be found.
       */
      private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT)
          throws IOException {
        // Load client secrets.
        InputStream in = AppsScriptQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        if (in == null) {
          throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
        }
        GoogleClientSecrets clientSecrets =
            GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    
        // Build flow and trigger user authorization request.
        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
            .setAccessType("offline")
            .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
      }
    
      public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        Script service =
            new Script.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
        Script.Projects projects = service.projects();
    
        // Creates a new script project.
        Project createOp = projects.create(new CreateProjectRequest().setTitle("My Script")).execute();
    
        // Uploads two files to the project.
        File file1 = new File()
            .setName("hello")
            .setType("SERVER_JS")
            .setSource("function helloWorld() {\n  console.log(\"Hello, world!\");\n}");
        File file2 = new File()
            .setName("appsscript")
            .setType("JSON")
            .setSource("{\"timeZone\":\"America/New_York\",\"exceptionLogging\":\"CLOUD\"}");
        Content content = new Content().setFiles(Arrays.asList(file1, file2));
        Content updatedContent = projects.updateContent(createOp.getScriptId(), content).execute();
    
        // Logs the project URL.
        System.out.printf("https://script.google.com/d/%s/edit\n", updatedContent.getScriptId());
      }
    }

Ejecuta la muestra

  1. Ejecuta la muestra:

    gradle run
    
  1. La primera vez que ejecutes la muestra, se te solicitará que autorices el acceso:
    1. Si aún no accediste a tu Cuenta de Google, hazlo cuando se te solicite. Si accedeste a varias cuentas, selecciona una para usarla en la autorización.
    2. Haz clic en Aceptar.

    Tu aplicación de Java se ejecuta y llama a la API de Google Apps Script.

    La información de autorización se almacena en el sistema de archivos; por lo tanto, la próxima vez que ejecutes la muestra código, no se te solicitará autorización.

Próximos pasos