DEV Community

Pallat Anchaleechamaikorn
Pallat Anchaleechamaikorn

Posted on

go กับ google drive

ทดลองเขียน Go ต่อไปที่ google drive เพื่อวางไฟล์

สิ่งที่ต้องเตรียม

  1. Google Account ซึ่งจะใช้ของส่วนตัวมาทดลองดูก็ได้
  2. Google Cloud ก็ใช้ account เดียวกับข้อ 1.
  3. ติดตั้ง Go ในเครื่องให้เรียบร้อย

เตรียม folder ใน google drive

  • New Folder แล้วตั้งชื่อ
  • แชร์ Folder นี้ออกมาแบบ public ไปเลย เพื่อทดลอง อย่าเอาไปทำจริงล่ะ
  • จด id ที่ แชร์ออกมา มันจะอยู่ใน url

สร้าง Service Account

ไปที่ Google Console
ไปที่เมนู APIs & Services
ถ้ายังไม่มี Project ก็สร้างเลย
กด Enable APIS AND SERVICES
ค้นหาด้วยคำว่า sheets จะเจอ Google Sheets API กดเข้าไปเลย
ไปสร้าง Service Account แล้ว Download json file

เขียนโค้ดสิครับ รออะไร

package main

import (
    "io/ioutil"
    "log"
    "os"

    "golang.org/x/oauth2"
    "golang.org/x/oauth2/google"
    drive "google.golang.org/api/drive/v3"
)

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, drive.DriveScope)
    if err != nil {
        log.Fatalf("Unable to parse client secret file to config: %v", err)
    }
    client := config.Client(oauth2.NoContext)

    service, err := drive.New(client)
    if err != nil {
        log.Fatalf("Unable to create Drive service: %v", err)
    }

    filename := "go.mod"

    goFile, err := os.Open(filename)
    if err != nil {
        log.Fatalf("error opening %q: %v", filename, err)
    }
    driveFile, err := service.Files.Create(&drive.File{
        Name:     filename,
        Parents:  []string{"idที่share_folderมา"},
        MimeType: "application/octet-stream",
    }).Media(goFile).Do()
    log.Printf("Got drive.File, err: %#v, %v", driveFile, err)
}

Enter fullscreen mode Exit fullscreen mode

ในที่นี้ผม upload go.mod ขึ้นไปโง่ๆเลย และก็อีกเช่นเคย ไม่ได้ capture รูปให้ดู ขออภัยด้วยครับ

Top comments (0)