Guia de início rápido do Go

Os guias de início rápido explicam como configurar e executar um app que chama uma a API Google Workspace.

Os guias de início rápido do Google Workspace usam as bibliotecas de cliente da API para lidar com algumas do fluxo de autenticação e autorização. Recomendamos que você você usa as bibliotecas de cliente para seus próprios aplicativos. Este guia de início rápido usa um autenticação simplificada, adequada para um teste de nuvem. Para um ambiente de produção, recomendamos aprender sobre autenticação e autorização antes como escolher as credenciais de acesso adequados para seu app.

Crie um aplicativo de linha de comando Go que faça solicitações para o API Google Apps Script.

Objetivos

  • Configurar o ambiente.
  • Configure a amostra.
  • Execute a amostra.

Pré-requisitos

  • Uma Conta do Google com o Google Drive ativado.

Configurar o ambiente

Para concluir este guia de início rápido, configure seu ambiente.

Ativar a API

Antes de usar as APIs do Google, você precisa ativá-las em um projeto do Google Cloud. É possível ativar uma ou mais APIs em um único projeto do Google Cloud.
  • No console do Google Cloud, ative a API Google Apps Script.

    Ativar a API

Se você estiver usando um novo projeto do Google Cloud para concluir este guia de início rápido, configure a tela de permissão OAuth e se adicione como usuário de teste. Se você já concluiu esta etapa para seu projeto do Cloud, pule para a próxima seção.

  1. No console do Google Cloud, acesse o menu > APIs e Serviços > Tela de permissão OAuth.

    Acessar a tela de permissão OAuth

  2. Em Tipo de usuário, selecione Interno e clique em Criar.
  3. Preencha o formulário de registro do app e clique em Save and continue.
  4. Por enquanto, ignore a adição de escopos e clique em Salvar e continuar. No futuro, quando você criar um aplicativo para usar fora de sua organização do Google Workspace, mude o Tipo de usuário para Externo. Em seguida, adicionar os escopos de autorização exigidos pelo app.

  5. Analise o resumo do registro do app. Para fazer mudanças, clique em Editar. Se o app estiver tudo certo, clique em Voltar para o painel.

Autorizar credenciais para um aplicativo de computador

Para autenticar usuários finais e acessar os dados deles no seu app, você precisa criar um ou mais IDs do cliente OAuth 2.0. Um ID do cliente é usado para identificar um único app nos servidores OAuth do Google. Caso seu app seja executado em várias plataformas, crie um ID do cliente separado para cada plataforma.
  1. No console do Google Cloud, acesse Menu > APIs e Serviços > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais > ID do cliente OAuth.
  3. Clique em Tipo de aplicativo > App para computador.
  4. No campo Nome, digite um nome para a credencial. Esse nome só é mostrado no console do Google Cloud.
  5. Clique em Criar. A tela criada pelo cliente OAuth será exibida, mostrando o novo ID e a chave secreta do cliente.
  6. Clique em OK. A credencial recém-criada aparece em IDs do cliente OAuth 2.0.
  7. Salve o arquivo JSON baixado como credentials.json e mova a no seu diretório de trabalho.

Preparar o espaço de trabalho

  1. Crie um diretório de trabalho:

    mkdir quickstart
    
  2. Mude para o diretório de trabalho:

    cd quickstart
    
  3. Inicialize o novo módulo:

    go mod init quickstart
    
  4. Obtenha a biblioteca de cliente Go da Google Apps Script API e o pacote OAuth2.0:

    go get google.golang.org/api/script/v1
    go get golang.org/x/oauth2/google
    

Configure a amostra

  1. No diretório de trabalho, crie um arquivo chamado quickstart.go.

  2. No arquivo, cole o seguinte código:

    apps_script/quickstart/quickstart.go
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    
    	"golang.org/x/oauth2"
    	"golang.org/x/oauth2/google"
    	"google.golang.org/api/option"
    	"google.golang.org/api/script/v1"
    )
    
    // Retrieve a token, saves the token, then returns the generated client.
    func getClient(config *oauth2.Config) *http.Client {
    	// The file token.json stores the user's access and refresh tokens, and is
    	// created automatically when the authorization flow completes for the first
    	// time.
    	tokFile := "token.json"
    	tok, err := tokenFromFile(tokFile)
    	if err != nil {
    		tok = getTokenFromWeb(config)
    		saveToken(tokFile, tok)
    	}
    	return config.Client(context.Background(), tok)
    }
    
    // Request a token from the web, then returns the retrieved token.
    func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
    	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
    	fmt.Printf("Go to the following link in your browser then type the "+
    		"authorization code: \n%v\n", authURL)
    
    	var authCode string
    	if _, err := fmt.Scan(&authCode); err != nil {
    		log.Fatalf("Unable to read authorization code: %v", err)
    	}
    
    	tok, err := config.Exchange(context.TODO(), authCode)
    	if err != nil {
    		log.Fatalf("Unable to retrieve token from web: %v", err)
    	}
    	return tok
    }
    
    // Retrieves a token from a local file.
    func tokenFromFile(file string) (*oauth2.Token, error) {
    	f, err := os.Open(file)
    	if err != nil {
    		return nil, err
    	}
    	defer f.Close()
    	tok := &oauth2.Token{}
    	err = json.NewDecoder(f).Decode(tok)
    	return tok, err
    }
    
    // Saves a token to a file path.
    func saveToken(path string, token *oauth2.Token) {
    	fmt.Printf("Saving credential file to: %s\n", path)
    	f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
    	if err != nil {
    		log.Fatalf("Unable to cache oauth token: %v", err)
    	}
    	defer f.Close()
    	json.NewEncoder(f).Encode(token)
    }
    
    func main() {
    	ctx := context.Background()
    	b, err := os.ReadFile("credentials.json")
    	if err != nil {
    		log.Fatalf("Unable to read client secret file: %v", err)
    	}
    
    	// If modifying these scopes, delete your previously saved token.json.
    	config, err := google.ConfigFromJSON(b, "https://www.googleapis.com/auth/script.projects")
    	if err != nil {
    		log.Fatalf("Unable to parse client secret file to config: %v", err)
    	}
    	client := getClient(config)
    
    	srv, err := script.NewService(ctx, option.WithHTTPClient(client))
    	if err != nil {
    		log.Fatalf("Unable to retrieve Script client: %v", err)
    	}
    
    	req := script.CreateProjectRequest{Title: "My Script"}
    	createRes, err := srv.Projects.Create(&req).Do()
    	if err != nil {
    		// The API encountered a problem.
    		log.Fatalf("The API returned an error: %v", err)
    	}
    	content := &script.Content{
    		ScriptId: createRes.ScriptId,
    		Files: []*script.File{{
    			Name:   "hello",
    			Type:   "SERVER_JS",
    			Source: "function helloWorld() {\n  console.log('Hello, world!');}",
    		}, {
    			Name: "appsscript",
    			Type: "JSON",
    			Source: "{\"timeZone\":\"America/New_York\",\"exceptionLogging\":" +
    				"\"CLOUD\"}",
    		}},
    	}
    	updateContentRes, err := srv.Projects.UpdateContent(createRes.ScriptId,
    		content).Do()
    	if err != nil {
    		// The API encountered a problem.
    		log.Fatalf("The API returned an error: %v", err)
    	}
    	log.Printf("https://script.google.com/d/%v/edit", updateContentRes.ScriptId)
    }
    

Executar a amostra

  1. No diretório de trabalho, crie e execute o exemplo:

    go run quickstart.go
    
  1. A primeira vez que você executar o exemplo, ele solicitará que você autorize o acesso:
    1. Se você ainda não tiver feito login na sua Conta do Google, faça isso quando solicitado. Se você tiver feito login em várias contas, selecione uma para usar na autorização.
    2. Clique em Aceitar.

    O aplicativo Go executa e chama a API Google Apps Script.

    As informações de autorização são armazenadas no sistema de arquivos. Assim, na próxima vez que você executar o exemplo a autorização não será solicitada.

Próximas etapas