go กับ google sheets

การเขียน 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 รูปให้ดูนะครับ ขออภัย คิดว่ากดๆตาม ในช่วงเวลาเดียวกัน น่าจะไม่ยากมากครับ

    41

    This website collects cookies to deliver better user experience

    go กับ google sheets