Перейти к быстрому запуску

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

В кратких руководствах объясняется, как настроить и запустить приложение, которое вызывает API Google Workspace.

В кратких руководствах по Google Workspace используются клиентские библиотеки API для обработки некоторых деталей процесса аутентификации и авторизации. Мы рекомендуем вам использовать клиентские библиотеки для ваших собственных приложений. Прежде чем вы сможете запустить пример приложения, в каждом кратком руководстве необходимо включить проверку подлинности и авторизацию. Если вы не знакомы с аутентификацией и авторизацией для API Google Workspace, прочтите обзор аутентификации и авторизации .

Создайте приложение командной строки Go, которое отправляет запросы к API выполнения сценариев Google Apps.

Цели

  • Настройте свою среду.
  • Настройте образец.
  • Запустите образец.

Предпосылки

  • Учетная запись Google с включенным Google Диском.

Настройте свою среду

Для завершения этого краткого руководства настройте свою среду.

Включить API

Прежде чем использовать Google API, вам необходимо включить их в проекте Google Cloud. Вы можете включить один или несколько API в одном проекте Google Cloud.

Авторизация учетных данных для настольного приложения

Чтобы пройти аутентификацию в качестве конечного пользователя и получить доступ к данным пользователя в вашем приложении, вам необходимо создать один или несколько идентификаторов клиента OAuth 2.0. Идентификатор клиента используется для идентификации одного приложения на серверах OAuth Google. Если ваше приложение работает на нескольких платформах, вы должны создать отдельный идентификатор клиента для каждой платформы.
  1. В консоли Google Cloud > API и службы > Учетные данные .

    Перейти к учетным данным

  2. Нажмите «Создать учетные данные » > «Идентификатор клиента OAuth » .
  3. Нажмите Тип приложения > Приложение для ПК .
  4. В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.
  5. Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
  6. Нажмите ОК . Вновь созданные учетные данные отображаются в разделе идентификаторов клиентов OAuth 2.0.
  7. Сохраните загруженный JSON-файл как credentials.json и переместите файл в свой рабочий каталог.

Подготовьте рабочее место

  1. Создайте рабочий каталог:

    mkdir quickstart
    
  2. Перейдите в рабочий каталог:

    cd quickstart
    
  3. Инициализируйте новый модуль:

    go mod init quickstart
    
  4. Получите клиентскую библиотеку Google Apps Script Execution API Go и пакет OAuth2:

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

Настроить образец

  1. В рабочем каталоге создайте файл с именем quickstart.go .

  2. Вставьте в файл следующий код:

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

Запустите образец

  1. В рабочем каталоге соберите и запустите пример:

    go run quickstart.go
    
  2. В браузере перейдите по http://localhost:8000 .

  3. При первом запуске примера вам будет предложено авторизовать доступ:

    1. Если вы еще не вошли в свою учетную запись Google, вам будет предложено выполнить вход. Если вы вошли в несколько учетных записей, выберите одну учетную запись для авторизации.
    2. Нажмите Принять .
    3. Скопируйте код из браузера, вставьте его в командную строку и нажмите Enter .

    Информация об авторизации хранится в файловой системе, поэтому при следующем запуске примера кода авторизация не запрашивается.

Вы успешно создали свое первое приложение Go, которое отправляет запросы к API выполнения сценариев Google Apps.

Следующие шаги