দ্রুত শুরু করুন

কুইকস্টার্ট ব্যাখ্যা করে যে কীভাবে একটি অ্যাপ সেট আপ করতে হয় এবং চালাতে হয় যেটি একটি Google Workspace API কল করে।

প্রমাণীকরণ এবং অনুমোদনের প্রবাহের কিছু বিবরণ পরিচালনা করতে Google Workspace কুইকস্টার্ট এপিআই ক্লায়েন্ট লাইব্রেরি ব্যবহার করে। আমরা সুপারিশ করি যে আপনি আপনার নিজের অ্যাপের জন্য ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন। এই কুইকস্টার্ট একটি সরলীকৃত প্রমাণীকরণ পদ্ধতি ব্যবহার করে যা একটি পরীক্ষার পরিবেশের জন্য উপযুক্ত। একটি উত্পাদন পরিবেশের জন্য, আমরা আপনার অ্যাপের জন্য উপযুক্ত অ্যাক্সেসের শংসাপত্রগুলি বেছে নেওয়ার আগে প্রমাণীকরণ এবং অনুমোদন সম্পর্কে শেখার পরামর্শ দিই৷

একটি Go কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করুন যা Google Apps Script API-কে অনুরোধ করে।

উদ্দেশ্য

  • আপনার পরিবেশ সেট আপ করুন।
  • নমুনা সেট আপ করুন।
  • নমুনা চালান।

পূর্বশর্ত

  • Google ড্রাইভ সহ একটি Google অ্যাকাউন্ট সক্রিয় করা হয়েছে৷

আপনার পরিবেশ সেট আপ করুন

এই কুইকস্টার্ট সম্পূর্ণ করতে, আপনার পরিবেশ সেট আপ করুন।

API সক্ষম করুন

Google API ব্যবহার করার আগে, আপনাকে একটি Google ক্লাউড প্রকল্পে সেগুলি চালু করতে হবে। আপনি একটি একক Google ক্লাউড প্রকল্পে এক বা একাধিক API চালু করতে পারেন৷

আপনি যদি এই কুইকস্টার্টটি সম্পূর্ণ করতে একটি নতুন Google ক্লাউড প্রকল্প ব্যবহার করেন, তাহলে OAuth সম্মতি স্ক্রীন কনফিগার করুন এবং নিজেকে একজন পরীক্ষামূলক ব্যবহারকারী হিসেবে যোগ করুন। আপনি যদি ইতিমধ্যে আপনার ক্লাউড প্রকল্পের জন্য এই পদক্ষেপটি সম্পন্ন করে থাকেন, তাহলে পরবর্তী বিভাগে যান।

  1. Google ক্লাউড কনসোলে, মেনু > API এবং পরিষেবা > OAuth সম্মতি স্ক্রীনে যান।

    OAuth সম্মতি স্ক্রিনে যান

  2. ব্যবহারকারীর প্রকারের জন্য অভ্যন্তরীণ নির্বাচন করুন, তারপরে তৈরি করুন ক্লিক করুন।
  3. অ্যাপ নিবন্ধন ফর্মটি পূরণ করুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান এ ক্লিক করুন।
  4. আপাতত, আপনি স্কোপ যোগ করা এড়িয়ে যেতে পারেন এবং সেভ এবং কন্টিনিউ এ ক্লিক করতে পারেন। ভবিষ্যতে, যখন আপনি আপনার Google Workspace সংস্থার বাইরে ব্যবহারের জন্য একটি অ্যাপ তৈরি করবেন, তখন আপনাকে অবশ্যই ব্যবহারকারীর ধরন পরিবর্তন করে External তে পরিবর্তন করতে হবে এবং তারপরে, আপনার অ্যাপের প্রয়োজনীয় অনুমোদনের সুযোগ যোগ করতে হবে।

  5. আপনার অ্যাপ নিবন্ধন সারাংশ পর্যালোচনা করুন. পরিবর্তন করতে, সম্পাদনা ক্লিক করুন। অ্যাপ নিবন্ধন ঠিক আছে বলে মনে হলে, ড্যাশবোর্ডে ফিরে যান ক্লিক করুন।

একটি ডেস্কটপ অ্যাপ্লিকেশনের জন্য শংসাপত্র অনুমোদন করুন৷

শেষ ব্যবহারকারীদের প্রমাণীকরণ করতে এবং আপনার অ্যাপে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে, আপনাকে এক বা একাধিক OAuth 2.0 ক্লায়েন্ট আইডি তৈরি করতে হবে। Google-এর OAuth সার্ভারে একটি একক অ্যাপ শনাক্ত করতে একটি ক্লায়েন্ট আইডি ব্যবহার করা হয়। যদি আপনার অ্যাপ একাধিক প্ল্যাটফর্মে চলে, তাহলে আপনাকে অবশ্যই প্রতিটি প্ল্যাটফর্মের জন্য একটি পৃথক ক্লায়েন্ট আইডি তৈরি করতে হবে।
  1. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  2. ক্রিয়েট ক্রেডেনশিয়াল > OAuth ক্লায়েন্ট আইডি ক্লিক করুন।
  3. Application type > Desktop app এ ক্লিক করুন।
  4. নাম ক্ষেত্রে, শংসাপত্রের জন্য একটি নাম টাইপ করুন। এই নামটি শুধুমাত্র Google ক্লাউড কনসোলে দেখানো হয়।
  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 API Go ক্লায়েন্ট লাইব্রেরি এবং OAuth2.0 প্যাকেজ পান:

    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
    
  1. আপনি যখন প্রথমবার নমুনা চালান, এটি আপনাকে অ্যাক্সেস অনুমোদন করতে অনুরোধ করে:
    1. আপনি যদি ইতিমধ্যে আপনার Google অ্যাকাউন্টে সাইন ইন না করে থাকেন, প্রম্পট করা হলে সাইন ইন করুন৷ আপনি একাধিক অ্যাকাউন্টে সাইন ইন করে থাকলে, অনুমোদনের জন্য ব্যবহার করার জন্য একটি অ্যাকাউন্ট নির্বাচন করুন।
    2. স্বীকার করুন ক্লিক করুন.

    আপনার Go অ্যাপ্লিকেশনটি Google Apps Script API চালায় এবং কল করে।

    অনুমোদনের তথ্য ফাইল সিস্টেমে সংরক্ষণ করা হয়, তাই পরের বার যখন আপনি নমুনা কোডটি চালাবেন, তখন আপনাকে অনুমোদনের জন্য অনুরোধ করা হবে না।

পরবর্তী পদক্ষেপ