क्विकस्टार्ट पर जाएं

एक आसान Go कमांड लाइन ऐप्लिकेशन बनाने के लिए, इस पेज के बाकी हिस्से में दिए गए चरणों को पूरा करें, जो Google Apps स्क्रिप्ट एपीआई के लिए अनुरोध करता है.

ज़रूरी बातें

इस क्विकस्टार्ट को चलाने के लिए, आपको इन शर्तों को पूरा करना होगा:

  • डेस्कटॉप ऐप्लिकेशन के लिए अनुमति देने वाले क्रेडेंशियल. किसी डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल बनाने का तरीका जानने के लिए, क्रेडेंशियल बनाएं देखें.

  • ऐसा Google खाता जिसमें Google Drive चालू हो.

पहला चरण: फ़ाइल फ़ोल्डर तैयार करना

  1. GOPATH एनवायरमेंट वैरिएबल को अपनी काम करने वाली डायरेक्ट्री पर सेट करें.
  2. इन निर्देशों का इस्तेमाल करके, Google Apps Script API Go क्लाइंट लाइब्रेरी और OAuth2 पैकेज पाएं:
go get -u google.golang.org/api/script/v1
go get -u golang.org/x/oauth2/google

दूसरा चरण: सैंपल सेट अप करना

अपनी वर्किंग डायरेक्ट्री में quickstart.go नाम की फ़ाइल बनाएं और इसे नीचे दिए गए कोड में कॉपी करें:

apps_script/quickstart/quickstart.go
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"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 := ioutil.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)
}

तीसरा चरण: सैंपल चलाना

अपनी वर्किंग डायरेक्ट्री से यहां दिए गए निर्देश का इस्तेमाल करके, सैंपल बनाएं और उसे चलाएं:

go run quickstart.go

पहली बार सैंपल लेने पर, यह आपको ऐक्सेस देने की अनुमति देने के लिए कहता है:

  1. अपने वेब ब्राउज़र में दिया गया यूआरएल ब्राउज़ करें.

    अगर आपने पहले से अपने Google खाते में साइन इन नहीं किया है, तो आपको साइन इन करने के लिए कहा जाएगा. अगर आपने एक से ज़्यादा Google खातों में साइन इन किया हुआ है, तो आपसे उन खातों को चुनने के लिए कहा जाएगा जिन्हें अनुमति देने के लिए इस्तेमाल किया जाएगा.

  2. स्वीकार करें बटन पर क्लिक करें.
  3. आपको जो कोड दिया गया है उसे कॉपी करें और उसे कमांड-लाइन प्रॉम्प्ट में चिपकाएं. इसके बाद, Enter दबाएं.

नोट

  • अनुमति के बारे में जानकारी को फ़ाइल सिस्टम पर सेव किया जाता है, ताकि बाद में किए जाने वाले अनुरोधों में अनुमति न मिले.
  • इस उदाहरण में दिया गया ऑथराइज़ेशन फ़्लो, कमांड-लाइन ऐप्लिकेशन के लिए डिज़ाइन किया गया है. वेब ऐप्लिकेशन में अनुमति देने का तरीका जानने के लिए, वेब सर्वर ऐप्लिकेशन के लिए, OAuth 2.0 का इस्तेमाल करना देखें .

समस्याएं हल करना

इस सेक्शन में कुछ ऐसी सामान्य समस्याओं के बारे में बताया गया है जो आपको इस क्विकस्टार्ट को चलाने की कोशिश करते समय हो सकती हैं. साथ ही, इन समस्याओं को हल करने के तरीके भी बताते हैं.

This app isn't verified

अगर OAuth के लिए सहमति वाली स्क्रीन पर चेतावनी और कोटेशन दिखता है, तो इस ऐप्लिकेशन की पुष्टि नहीं की गई है. इसकी वजह से, आपका ऐप्लिकेशन ऐसे दायरे का अनुरोध कर रहा है जो उपयोगकर्ता के संवेदनशील डेटा को ऐक्सेस करने की सुविधा देता है. अगर आपका ऐप्लिकेशन संवेदनशील दायरों का इस्तेमाल करता है, तो उस चेतावनी और दूसरी सीमाओं को हटाने के लिए, आपके ऐप्लिकेशन को पुष्टि की प्रक्रिया से गुज़रना होगा. डेवलपमेंट फ़ेज़ के दौरान, आप बेहतर &gt चुनकर, इस चेतावनी से आगे जा सकते हैं; {Project Name} पर जाएं (असुरक्षित).

File not found error for credentials.json

सैंपल चलाने पर, हो सकता है कि आपको कोई फ़ाइल न मिले या क्रेडेंशियल.json से जुड़ी कोई फ़ाइल गड़बड़ी न हो.

यह गड़बड़ी तब होती है, जब आपने ऊपर दिए गए ज़रूरी शर्तें सेक्शन में दी गई जानकारी के मुताबिक, डेस्कटॉप ऐप्लिकेशन क्रेडेंशियल को अनुमति नहीं दी हो. किसी डेस्कटॉप ऐप्लिकेशन के लिए क्रेडेंशियल बनाने का तरीका जानने के लिए, क्रेडेंशियल बनाएं पर जाएं.

क्रेडेंशियल बनाने के बाद, पक्का करें कि डाउनलोड की गई JSON फ़ाइल credentials.json के तौर पर सेव की गई है. इसके बाद, फ़ाइल को बाकी काम के कोड के साथ काम करने वाली डायरेक्ट्री पर ले जाएं.

आगे पढ़ना

इस क्विकस्टार्ट में इस्तेमाल किए गए एपीआई के बारे में ज़्यादा जानकारी के लिए, GitHub के लिए google-api-go-client सेक्शन देखें.