Rails Insights

Så här använder du Google Sheets med Golang

Google Sheets är ett kraftfullt verktyg för att hantera och analysera data, och med Golang (Go) kan du enkelt interagera med Google Sheets API för att automatisera uppgifter och hantera data. I den här artikeln kommer vi att gå igenom hur du kan använda Google Sheets med Golang, steg för steg. Vi kommer att täcka allt från att ställa in ditt Google Cloud-projekt till att skriva kod för att läsa och skriva data i ett Google Sheet.

Förutsättningar

Innan vi börjar, se till att du har följande:

  • En Google-konto
  • Golang installerat på din dator
  • En textredigerare eller IDE för att skriva din kod

Steg 1: Skapa ett Google Cloud-projekt

För att använda Google Sheets API måste du först skapa ett Google Cloud-projekt och aktivera API:et. Följ dessa steg:

  1. Gå till Google Cloud Console.
  2. Klicka på "Välj ett projekt" och sedan "Nytt projekt".
  3. Ge ditt projekt ett namn och klicka på "Skapa".
  4. När projektet har skapats, gå till "API:er och tjänster" och klicka på "Bibliotek".
  5. Sök efter "Google Sheets API" och aktivera det.

Steg 2: Skapa autentiseringsuppgifter

För att din Golang-applikation ska kunna kommunicera med Google Sheets API behöver du autentiseringsuppgifter. Följ dessa steg:

  1. Gå till "API:er och tjänster" och klicka på "Autentiseringsuppgifter".
  2. Klicka på "Skapa autentiseringsuppgifter" och välj "OAuth 2.0-klient-ID".
  3. Välj "Webbapplikation" som typ av applikation.
  4. Under "Godkända omdirigerings-URI:er" lägger du till http://localhost:8080.
  5. Klicka på "Skapa" och spara din klient-ID och klienthemlighet.

Steg 3: Installera nödvändiga Golang-paket

För att arbeta med Google Sheets API i Golang behöver vi installera några paket. Öppna din terminal och kör följande kommando:

go get -u google.golang.org/api/sheets/v4
go get -u golang.org/x/oauth2
go get -u golang.org/x/oauth2/google

Steg 4: Skriv din Golang-kod

Nu är det dags att skriva koden för att interagera med Google Sheets. Skapa en ny fil, till exempel main.go, och lägg till följande kod:

package main

import (
    "context"
    "fmt"
    "log"
    "net/http"
    "os"
    "google.golang.org/api/sheets/v4"
    "golang.org/x/oauth2"
    "golang.org/x/oauth2/google"
)

var (
    spreadsheetId = "DIN_SPREADSHEET_ID"
    rangeData     = "Sheet1!A1:D10"
)

func main() {
    ctx := context.Background()
    b, err := os.ReadFile("credentials.json")
    if err != nil {
        log.Fatalf("Kan inte läsa credentials.json: %v", err)
    }

    config, err := google.ConfigFromJSON(b, sheets.SpreadsheetsScope)
    if err != nil {
        log.Fatalf("Kan inte skapa konfiguration: %v", err)
    }

    client := getClient(config)

    srv, err := sheets.New(client)
    if err != nil {
        log.Fatalf("Kan inte skapa Sheets-tjänst: %v", err)
    }

    readData(srv)
}

func getClient(config *oauth2.Config) *http.Client {
    tok, err := tokenFromFile("token.json")
    if err != nil {
        tok = getTokenFromWeb(config)
        saveToken("token.json", tok)
    }
    return config.Client(context.Background(), tok)
}

func readData(srv *sheets.Service) {
    resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, rangeData).Do()
    if err != nil {
        log.Fatalf("Kan inte hämta data: %v", err)
    }
    if len(resp.Values) == 0 {
        fmt.Println("Inga data funna.")
    } else {
        fmt.Println("Data:")
        for _, row := range resp.Values {
            fmt.Println(row)
        }
    }
}

// Implementera getTokenFromWeb och saveToken här

Förklaring av koden

I koden ovan gör vi följande:

  • Vi läser in autentiseringsuppgifterna från credentials.json.
  • Vi skapar en OAuth2-klient för att autentisera oss mot Google Sheets API.
  • Vi definierar en funktion readData för att läsa data från ett specifikt intervall i vårt Google Sheet.

Steg 5: Hantera autentisering

För att hantera autentisering behöver vi implementera funktionerna getTokenFromWeb och saveToken. Lägg till följande kod i din main.go:

func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
    // Skapa en ny HTTP-server för att ta emot OAuth2-omdirigering
    // och hämta token
}

func saveToken(path string, token *oauth2.Token) {
    // Spara token till en fil
}

Fyll i autentiseringsfunktionerna

Här är en enkel implementation av dessa funktioner:

func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
    authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
    fmt.Printf("Öppna följande URL i din webbläsare:\n%v\n", authURL)

    var code string
    fmt.Print("Ange koden som du får efter att ha loggat in: ")
    fmt.Scan(&code)

    tok, err := config.Exchange(context.Background(), code)
    if err != nil {
        log.Fatalf("Kan inte byta kod mot token: %v", err)
    }
    return tok
}

func saveToken(path string, token *oauth2.Token) {
    f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
    if err != nil {
        log.Fatalf("Kan inte öppna filen %v: %v", path, err)
    }
    defer f.Close()
    if err := json.NewEncoder(f).Encode(token); err != nil {
        log.Fatalf("Kan inte spara token: %v", err)
    }
}

Steg 6: Testa din applikation

Nu är allt klart! Du kan köra din applikation med följande kommando:

go run main.go

Följ instruktionerna i terminalen för att autentisera dig och hämta data från ditt Google Sheet. Om allt fungerar som det ska, bör du se data från det angivna intervallet i terminalen.

Avslutning

Att använda Google Sheets med Golang kan öppna upp för många möjligheter när det gäller att automatisera datahantering och analys. Genom att följa stegen ovan har du nu en grundläggande förståelse för hur du kan interagera med Google Sheets API. Du kan bygga vidare på detta genom att implementera funktioner för att skriva data, uppdatera celler och mycket mer.

Vi hoppas att denna guide har varit till hjälp och att du känner dig inspirerad att utforska mer om vad du kan göra med Google Sheets och Golang. Lycka till med ditt projekt!

Published: August 24, 2024

© 2024 RailsInsights. All rights reserved.