Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Tạo một ứng dụng dòng lệnh Go đưa ra yêu cầu đến Google Apps Script API.
Hướng dẫn bắt đầu nhanh giải thích cách thiết lập và chạy một ứng dụng gọi một API Google Workspace. Hướng dẫn bắt đầu nhanh này sử dụng phương pháp xác thực đơn giản phù hợp với môi trường kiểm thử. Đối với môi trường phát hành công khai, bạn nên tìm hiểu về xác thực và uỷ quyền trước khi chọn thông tin đăng nhập để truy cập phù hợp với ứng dụng của bạn.
Hướng dẫn bắt đầu nhanh này sử dụng các thư viện ứng dụng API được đề xuất của Google Workspace để xử lý một số thông tin chi tiết về quy trình xác thực và uỷ quyền.
Nếu bạn đang sử dụng một dự án mới trên Google Cloud để hoàn tất hướng dẫn bắt đầu nhanh này, hãy định cấu hình màn hình đồng ý OAuth. Nếu bạn đã hoàn tất bước này cho dự án trên Cloud, hãy chuyển sang phần tiếp theo.
Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn menu>Google Auth platform>Thương hiệu.
Nếu đã định cấu hình Google Auth platform, bạn có thể định cấu hình các chế độ cài đặt sau đây cho Màn hình đồng ý OAuth trong phần Thương hiệu, Đối tượng và Quyền truy cập vào dữ liệu. Nếu bạn thấy thông báo Google Auth platform chưa được định cấu hình, hãy nhấp vào Bắt đầu:
Trong phần Thông tin về ứng dụng, hãy nhập tên cho ứng dụng trong mục Tên ứng dụng.
Trong phần Email hỗ trợ người dùng, hãy chọn một địa chỉ email hỗ trợ mà người dùng có thể liên hệ với bạn nếu họ có thắc mắc về sự đồng ý của mình.
Nhấp vào Tiếp theo.
Trong phần Đối tượng người xem, hãy chọn Nội bộ.
Nhấp vào Tiếp theo.
Trong phần Thông tin liên hệ, hãy nhập Địa chỉ email để bạn có thể nhận thông báo về mọi thay đổi đối với dự án của mình.
Hiện tại, bạn có thể bỏ qua bước thêm phạm vi.
Trong tương lai, khi tạo một ứng dụng để sử dụng bên ngoài tổ chức Google Workspace, bạn phải thay đổi Loại người dùng thành Bên ngoài. Sau đó, hãy thêm các phạm vi uỷ quyền mà ứng dụng của bạn yêu cầu. Để tìm hiểu thêm, hãy xem hướng dẫn đầy đủ về cách Định cấu hình sự đồng ý của OAuth.
Uỷ quyền thông tin đăng nhập cho một ứng dụng máy tính
Để xác thực người dùng cuối và truy cập vào dữ liệu người dùng trong ứng dụng của mình, bạn cần tạo một hoặc nhiều Mã ứng dụng OAuth 2.0. Mã ứng dụng khách được dùng để xác định một ứng dụng duy nhất cho các máy chủ OAuth của Google. Nếu ứng dụng của bạn chạy trên nhiều nền tảng, bạn phải tạo một mã nhận dạng ứng dụng riêng cho mỗi nền tảng.
Trong bảng điều khiển Google Cloud, hãy chuyển đến phần Trình đơn menu>Google Auth platform>Ứng dụng.
packagemainimport("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.funcgetClient(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)iferr!=nil{tok=getTokenFromWeb(config)saveToken(tokFile,tok)}returnconfig.Client(context.Background(),tok)}// Request a token from the web, then returns the retrieved token.funcgetTokenFromWeb(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)varauthCodestringif_,err:=fmt.Scan(&authCode);err!=nil{log.Fatalf("Unable to read authorization code: %v",err)}tok,err:=config.Exchange(context.TODO(),authCode)iferr!=nil{log.Fatalf("Unable to retrieve token from web: %v",err)}returntok}// Retrieves a token from a local file.functokenFromFile(filestring)(*oauth2.Token,error){f,err:=os.Open(file)iferr!=nil{returnnil,err}deferf.Close()tok:=&oauth2.Token{}err=json.NewDecoder(f).Decode(tok)returntok,err}// Saves a token to a file path.funcsaveToken(pathstring,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)iferr!=nil{log.Fatalf("Unable to cache oauth token: %v",err)}deferf.Close()json.NewEncoder(f).Encode(token)}funcmain(){ctx:=context.Background()b,err:=os.ReadFile("credentials.json")iferr!=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")iferr!=nil{log.Fatalf("Unable to parse client secret file to config: %v",err)}client:=getClient(config)srv,err:=script.NewService(ctx,option.WithHTTPClient(client))iferr!=nil{log.Fatalf("Unable to retrieve Script client: %v",err)}req:=script.CreateProjectRequest{Title:"My Script"}createRes,err:=srv.Projects.Create(&req).Do()iferr!=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()iferr!=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)}
Chạy mẫu
Trong thư mục làm việc, hãy tạo và chạy mẫu:
go run quickstart.go
Khi bạn chạy mẫu lần đầu tiên, mẫu sẽ nhắc bạn uỷ quyền truy cập:
Nếu bạn chưa đăng nhập vào Tài khoản Google, hãy đăng nhập khi được nhắc. Nếu bạn đã đăng nhập vào nhiều tài khoản, hãy chọn một tài khoản để dùng cho việc uỷ quyền.
Nhấp vào Chấp nhận.
Ứng dụng Go của bạn chạy và gọi API Google Apps Script.
Thông tin uỷ quyền được lưu trữ trong hệ thống tệp, vì vậy, vào lần tiếp theo chạy mã mẫu, bạn sẽ không được nhắc uỷ quyền.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-08-31 UTC."],[[["\u003cp\u003eThis quickstart provides a guide to creating a Go command-line application that interacts with the Google Apps Script API, enabling you to automate tasks and manage scripts programmatically.\u003c/p\u003e\n"],["\u003cp\u003eBefore running the sample, you'll need to set up your environment by enabling the API, configuring the OAuth consent screen, and authorizing credentials for your desktop application using provided instructions and code snippets.\u003c/p\u003e\n"],["\u003cp\u003eOnce configured, you can build and run the sample, which will prompt you for authorization, create a new Google Apps Script project, and update its content with a simple "Hello, world!" function, providing a practical demonstration of the API's capabilities.\u003c/p\u003e\n"],["\u003cp\u003eFor a production environment, it's crucial to delve deeper into authentication and authorization methods, choosing appropriate access credentials that align with your application's security requirements and user data access needs.\u003c/p\u003e\n"],["\u003cp\u003eAfter completing the quickstart, you can further explore the Apps Script API's functionalities and the Go client library's features through provided links to reference documentation and GitHub resources.\u003c/p\u003e\n"]]],[],null,["Create a Go command-line application that makes requests to the\nGoogle Apps Script API.\n\nQuickstarts explain how to set up and run an app that calls a\nGoogle Workspace API. This quickstart uses a\nsimplified authentication approach that is appropriate for a testing\nenvironment. For a production environment, we recommend learning about\n[authentication and authorization](/workspace/guides/auth-overview)\nbefore\n[choosing the access credentials](/workspace/guides/create-credentials#choose_the_access_credential_that_is_right_for_you)\nthat are appropriate for your app.\n\nThis quickstart uses Google Workspace's recommended API client libraries\nto handle some details of the authentication and authorization flow.\n\nObjectives\n\n- Set up your environment.\n- Set up the sample.\n- Run the sample.\n\nPrerequisites\n\n- Latest version of [Go](https://golang.org/).\n- Latest version of [Git](https://git-scm.com/).\n- [A Google Cloud project](/workspace/guides/create-project).\n\n\n- A Google account with Google Drive enabled.\n\n\u003cbr /\u003e\n\nSet up your environment\n\nTo complete this quickstart, set up your environment.\n\nEnable the API Before using Google APIs, you need to turn them on in a Google Cloud project. You can turn on one or more APIs in a single Google Cloud project.\n\n- In the Google Cloud console, enable the Google Apps Script API.\n\n [Enable the API](https://console.cloud.google.com/apis/enableflow?apiid=script.googleapis.com)\n\nConfigure the OAuth consent screen\n\nIf you're using a new Google Cloud project to complete this quickstart, configure\nthe OAuth consent screen. If you've already\ncompleted this step for your Cloud project, skip to the next section.\n\n1. In the Google Cloud console, go to Menu menu \\\u003e **Google Auth platform** \\\u003e **Branding** .\n\n [Go to Branding](https://console.cloud.google.com/auth/branding)\n2. If you have already configured the Google Auth platform, you can configure the following OAuth Consent Screen settings in [Branding](https://console.cloud.google.com/auth/branding), [Audience](https://console.cloud.google.com/auth/audience), and [Data Access](https://console.cloud.google.com/auth/scopes). If you see a message that says **Google Auth platform not configured yet** , click **Get Started**:\n 1. Under **App Information** , in **App name**, enter a name for the app.\n 2. In **User support email**, choose a support email address where users can contact you if they have questions about their consent.\n 3. Click **Next**.\n 4. Under **Audience** , select **Internal**.\n 5. Click **Next**.\n 6. Under **Contact Information** , enter an **Email address** where you can be notified about any changes to your project.\n 7. Click **Next**.\n 8. Under **Finish** , review the [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy) and if you agree, select **I agree to the Google API Services: User Data Policy**.\n 9. Click **Continue**.\n 10. Click **Create**.\n3. For now, you can skip adding scopes. In the future, when you create an app for use outside of your Google Workspace organization, you must change the **User type** to **External** . Then add the authorization scopes that your app requires. To learn more, see the full [Configure OAuth consent](/workspace/guides/configure-oauth-consent) guide.\n\nAuthorize credentials for a desktop application To authenticate end users and access user data in your app, you need to create one or more OAuth 2.0 Client IDs. A client ID is used to identify a single app to Google's OAuth servers. If your app runs on multiple platforms, you must create a separate client ID for each platform.\n\n1. In the Google Cloud console, go to Menu menu \\\u003e **Google Auth platform** \\\u003e **Clients** .\n\n [Go to Clients](https://console.cloud.google.com/auth/clients)\n2. Click **Create Client**.\n3. Click **Application type** \\\u003e **Desktop app**.\n4. In the **Name** field, type a name for the credential. This name is only shown in the Google Cloud console.\n5. Click **Create** .\n\n\n The newly created credential appears under \"OAuth 2.0 Client IDs.\"\n6. Save the downloaded JSON file as `credentials.json`, and move the file to your working directory.\n\nPrepare the workspace\n\n1. Create a working directory:\n\n ```\n mkdir quickstart\n ```\n2. Change to the working directory:\n\n ```\n cd quickstart\n ```\n3. Initialize the new module:\n\n ```\n go mod init quickstart\n ```\n4. Get the Google Apps Script API Go client library and OAuth2.0 package:\n\n ```\n go get google.golang.org/api/script/v1\n go get golang.org/x/oauth2/google\n ```\n\nSet up the sample\n\n1. In your working directory, create a file named `quickstart.go`.\n\n2. In the file, paste the following code:\n\n\n apps_script/quickstart/quickstart.go \n [View on GitHub](https://github.com/googleworkspace/go-samples/blob/main/apps_script/quickstart/quickstart.go) \n\n ```go\n package main\n\n import (\n \t\"context\"\n \t\"encoding/json\"\n \t\"fmt\"\n \t\"log\"\n \t\"net/http\"\n \t\"os\"\n\n \t\"golang.org/x/oauth2\"\n \t\"golang.org/x/oauth2/google\"\n \t\"google.golang.org/api/option\"\n \t\"google.golang.org/api/script/v1\"\n )\n\n // Retrieve a token, saves the token, then returns the generated client.\n func getClient(config *oauth2.Config) *http.Client {\n \t// The file token.json stores the user's access and refresh tokens, and is\n \t// created automatically when the authorization flow completes for the first\n \t// time.\n \ttokFile := \"token.json\"\n \ttok, err := tokenFromFile(tokFile)\n \tif err != nil {\n \t\ttok = getTokenFromWeb(config)\n \t\tsaveToken(tokFile, tok)\n \t}\n \treturn config.Client(context.Background(), tok)\n }\n\n // Request a token from the web, then returns the retrieved token.\n func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {\n \tauthURL := config.AuthCodeURL(\"state-token\", oauth2.AccessTypeOffline)\n \tfmt.Printf(\"Go to the following link in your browser then type the \"+\n \t\t\"authorization code: \\n%v\\n\", authURL)\n\n \tvar authCode string\n \tif _, err := fmt.Scan(&authCode); err != nil {\n \t\tlog.Fatalf(\"Unable to read authorization code: %v\", err)\n \t}\n\n \ttok, err := config.Exchange(context.TODO(), authCode)\n \tif err != nil {\n \t\tlog.Fatalf(\"Unable to retrieve token from web: %v\", err)\n \t}\n \treturn tok\n }\n\n // Retrieves a token from a local file.\n func tokenFromFile(file string) (*oauth2.Token, error) {\n \tf, err := os.Open(file)\n \tif err != nil {\n \t\treturn nil, err\n \t}\n \tdefer f.Close()\n \ttok := &oauth2.Token{}\n \terr = json.NewDecoder(f).Decode(tok)\n \treturn tok, err\n }\n\n // Saves a token to a file path.\n func saveToken(path string, token *oauth2.Token) {\n \tfmt.Printf(\"Saving credential file to: %s\\n\", path)\n \tf, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)\n \tif err != nil {\n \t\tlog.Fatalf(\"Unable to cache oauth token: %v\", err)\n \t}\n \tdefer f.Close()\n \tjson.NewEncoder(f).Encode(token)\n }\n\n func main() {\n \tctx := context.Background()\n \tb, err := os.ReadFile(\"credentials.json\")\n \tif err != nil {\n \t\tlog.Fatalf(\"Unable to read client secret file: %v\", err)\n \t}\n\n \t// If modifying these scopes, delete your previously saved token.json.\n \tconfig, err := google.ConfigFromJSON(b, \"https://www.googleapis.com/auth/script.projects\")\n \tif err != nil {\n \t\tlog.Fatalf(\"Unable to parse client secret file to config: %v\", err)\n \t}\n \tclient := getClient(config)\n\n \tsrv, err := script.NewService(ctx, option.WithHTTPClient(client))\n \tif err != nil {\n \t\tlog.Fatalf(\"Unable to retrieve Script client: %v\", err)\n \t}\n\n \treq := script.CreateProjectRequest{Title: \"My Script\"}\n \tcreateRes, err := srv.Projects.Create(&req).Do()\n \tif err != nil {\n \t\t// The API encountered a problem.\n \t\tlog.Fatalf(\"The API returned an error: %v\", err)\n \t}\n \tcontent := &script.Content{\n \t\tScriptId: createRes.ScriptId,\n \t\tFiles: []*script.File{{\n \t\t\tName: \"hello\",\n \t\t\tType: \"SERVER_JS\",\n \t\t\tSource: \"function helloWorld() {\\n console.log('Hello, world!');}\",\n \t\t}, {\n \t\t\tName: \"appsscript\",\n \t\t\tType: \"JSON\",\n \t\t\tSource: \"{\\\"timeZone\\\":\\\"America/New_York\\\",\\\"exceptionLogging\\\":\" +\n \t\t\t\t\"\\\"CLOUD\\\"}\",\n \t\t}},\n \t}\n \tupdateContentRes, err := srv.Projects.UpdateContent(createRes.ScriptId,\n \t\tcontent).Do()\n \tif err != nil {\n \t\t// The API encountered a problem.\n \t\tlog.Fatalf(\"The API returned an error: %v\", err)\n \t}\n \tlog.Printf(\"https://script.google.com/d/%v/edit\", updateContentRes.ScriptId)\n }\n ```\n\n \u003cbr /\u003e\n\nRun the sample\n\n1. In your working directory, build and run the sample:\n\n ```\n go run quickstart.go\n ```\n\n\u003c!-- --\u003e\n\n2. The first time you run the sample, it prompts you to authorize access:\n 1. If you're not already signed in to your Google Account, sign in when prompted. If you're signed in to multiple accounts, select one account to use for authorization.\n 2. Click **Accept**.\n\n\n Your Go application runs and calls the Google Apps Script API.\n\n\n Authorization information is stored in the file system, so the next time you run the sample\n code, you aren't prompted for authorization.\n\nNext steps\n\n- [Try the Google Workspace APIs in the APIs explorer](/workspace/explore)\n - [Apps Script API reference documentation](/apps-script/api/reference/rest)\n - [`google-api-go-client` section of GitHub](https://github.com/google/google-api-go-client)"]]