This content originally appeared on DEV Community and was authored by Pallat Anchaleechamaikorn
การเขียน Go เพื่อไปอ่านหรือเขียนใน Google Sheets ต้องทำอะไรบ้าง
วันที่ทดลองใช้ go version 1.16.5
สิ่งที่ต้องเตรียม
- Google Account ซึ่งจะใช้ของส่วนตัวมาทดลองดูก็ได้
- Google Cloud ก็ใช้ account เดียวกับข้อ 1.
- ติดตั้ง Go ในเครื่องให้เรียบร้อย
เตรียม Google Sheet
- สร้างไฟล์ใน Google Sheet ไว้ 1 file ตั้งชื่อให้เรียบร้อย
- ตั้งชื่อ Sheet ไว้สักหน่อย เช่น Sheet1 เป็นต้น
- จะเพิ่มข้อมูลไว้เล่นๆดูสักหน่อยก็แล้วแต่เลย
- กด Share เอาแบบ public ไปเลย
สร้าง Service Account
- ไปที่ Google Console
- ไปที่เมนู
APIs & Services
- ถ้ายังไม่มี Project ก็สร้างเลย
- กด Enable APIS AND SERVICES
- ค้นหาด้วยคำว่า
sheets
จะเจอGoogle Sheets API
กดเข้าไปเลย - ไปสร้าง Service Account แล้ว Download json file
เขียนโค้ดสิครับ รออะไร
package main
import (
"context"
"fmt"
"io/ioutil"
"log"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
)
func main() {
ctx := context.Background()
b, err := ioutil.ReadFile("./ไฟล์ที่donwloadมา.json")
if err != nil {
log.Fatalf("Unable to read client secret file: %v", err)
}
config, err := google.JWTConfigFromJSON(b, "https://www.googleapis.com/auth/spreadsheets")
if err != nil {
log.Fatalf("Unable to parse client secret file to config: %v", err)
}
client := config.Client(oauth2.NoContext)
srv, err := sheets.NewService(ctx, option.WithHTTPClient(client))
if err != nil {
log.Fatalf("Unable to retrieve Sheets client: %v", err)
}
spreadsheetId := "idที่shareเอกสารมา"
readRange := "A1:E1"
resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
if err != nil {
log.Fatalf("Unable to retrieve data from sheet: %v", err)
}
if len(resp.Values) == 0 {
fmt.Println("No data found.")
} else {
fmt.Println("Name, Major:")
for _, row := range resp.Values {
fmt.Printf("%s, %s\n", row[0], row[4])
}
}
rb := &sheets.ValueRange{
MajorDimension: "ROWS",
Values: [][]interface{}{
{"AAAA"},
},
}
_, err = srv.Spreadsheets.Values.Append(spreadsheetId, "Sheet1!A2:A2", rb).ValueInputOption("USER_ENTERED").Do()
if err != nil {
log.Fatalf("Unable to append data to sheet: %v", err)
}
}
ไม่ได้ capture รูปให้ดูนะครับ ขออภัย คิดว่ากดๆตาม ในช่วงเวลาเดียวกัน น่าจะไม่ยากมากครับ
This content originally appeared on DEV Community and was authored by Pallat Anchaleechamaikorn
Pallat Anchaleechamaikorn | Sciencx (2021-07-04T08:34:21+00:00) go กับ google sheets. Retrieved from https://www.scien.cx/2021/07/04/go-%e0%b8%81%e0%b8%b1%e0%b8%9a-google-sheets/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.