Guide de démarrage rapide pour Go

Les guides de démarrage rapide expliquent comment configurer et exécuter une application qui appelle une API Google Workspace.

Les démarrages rapides Google Workspace utilisent les bibliothèques clientes de l'API pour gérer certains détails du flux d'authentification et d'autorisation. Nous vous recommandons d'utiliser les bibliothèques clientes pour vos propres applications. Ce guide de démarrage rapide utilise une approche d'authentification simplifiée adaptée à un environnement de test. Pour un environnement de production, nous vous recommandons de vous familiariser avec l'authentification et l'autorisation avant de choisir les identifiants d'accès appropriés pour votre application.

Créez une application de ligne de commande Go qui envoie des requêtes à l'API Google Apps Script.

Objectifs

  • configurer votre environnement ;
  • Configurez l'exemple.
  • Exécutez l'exemple.

Prérequis

  • Un compte Google avec Google Drive activé

Configurer votre environnement

Pour suivre ce guide de démarrage rapide, configurez votre environnement.

Activer l'API

Avant d'utiliser les API Google, vous devez les activer dans un projet Google Cloud. Vous pouvez activer une ou plusieurs API dans un même projet Google Cloud.
  • Dans la console Google Cloud, activez l'API Google Apps Script.

    Activer l'API

Si vous utilisez un nouveau projet Google Cloud pour suivre cet atelier de démarrage rapide, configurez l'écran d'autorisation OAuth. Si vous avez déjà effectué cette étape pour votre projet Cloud, passez à la section suivante.

  1. Dans la console Google Cloud, accédez à Menu  > > Branding.

    Accéder à "Branding"

  2. Si vous avez déjà configuré , vous pouvez configurer les paramètres suivants de l'écran d'autorisation OAuth dans Branding (Marquage), Audience (Audience) et Data Access (Accès aux données). Si le message Pas encore configuré s'affiche, cliquez sur Commencer:
    1. Sous Informations sur l'application, dans Nom de l'application, saisissez un nom pour l'application.
    2. Sous Adresse e-mail d'assistance utilisateur, choisissez une adresse e-mail d'assistance à laquelle les utilisateurs peuvent vous contacter en cas de question sur leur consentement.
    3. Cliquez sur Suivant.
    4. Sous Audience, sélectionnez Interne.
    5. Cliquez sur Suivant.
    6. Sous Coordonnées, saisissez une adresse e-mail à laquelle vous pourrez être informé de toute modification apportée à votre projet.
    7. Cliquez sur Suivant.
    8. Sous Terminer, consultez le Règlement sur les données utilisateur dans les services d'API Google et, si vous acceptez, sélectionnez J'accepte le Règlement sur les données utilisateur dans les services d'API Google.
    9. Cliquez sur Continuer.
    10. Cliquez sur Créer.
  3. Pour l'instant, vous pouvez ignorer l'ajout d'autorisations. À l'avenir, lorsque vous créerez une application à utiliser en dehors de votre organisation Google Workspace, vous devrez définir le type d'utilisateur sur Externe. Ajoutez ensuite les champs d'application d'autorisation dont votre application a besoin. Pour en savoir plus, consultez le guide complet Configurer le consentement OAuth.

Autoriser des identifiants pour une application de bureau

Pour authentifier les utilisateurs finaux et accéder aux données utilisateur dans votre application, vous devez créer un ou plusieurs ID client OAuth 2.0. Un ID client sert à identifier une application unique auprès des serveurs OAuth de Google. Si votre application s'exécute sur plusieurs plates-formes, vous devez créer un ID client distinct pour chacune d'elles.
  1. Dans la console Google Cloud, accédez à Menu  > > Clients.

    Accéder à "Clients"

  2. Cliquez sur Créer un client.
  3. Cliquez sur Type d'application > Application pour ordinateur.
  4. Dans le champ Nom, saisissez un nom pour l'identifiant. Ce nom n'apparaît que dans la console Google Cloud.
  5. Cliquez sur Créer.

    Les identifiants nouvellement créés s'affichent sous "ID client OAuth 2.0".

  6. Enregistrez le fichier JSON téléchargé sous le nom credentials.json, puis déplacez-le dans votre répertoire de travail.

Préparer l'espace de travail

  1. Créez un répertoire de travail :

    mkdir quickstart
    
  2. Accédez au répertoire de travail :

    cd quickstart
    
  3. Initialisez le nouveau module:

    go mod init quickstart
    
  4. Obtenez la bibliothèque cliente Go de l'API Google Apps Script et le package OAuth2.0:

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

Configurer l'exemple

  1. Dans votre répertoire de travail, créez un fichier nommé quickstart.go.

  2. Dans le fichier, collez le code suivant:

    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)
    }

Exécuter l'exemple

  1. Dans votre répertoire de travail, créez et exécutez l'exemple:

    go run quickstart.go
    
  1. La première fois que vous exécutez l'exemple, vous êtes invité à autoriser l'accès :
    1. Si vous n'êtes pas encore connecté à votre compte Google, connectez-vous lorsque vous y êtes invité. Si vous êtes connecté à plusieurs comptes, sélectionnez-en un pour l'autorisation.
    2. Cliquez sur Accepter.

    Votre application Go s'exécute et appelle l'API Google Apps Script.

    Les informations d'autorisation sont stockées dans le système de fichiers. Par conséquent, la prochaine fois que vous exécuterez l'exemple de code, vous ne serez pas invité à vous authentifier.

Étapes suivantes