😽

GoでGoogleスプレッドシートにデータを書き込む方法

2024/09/18に公開

1. はじめに

この記事では、Go言語を使用してGoogleスプレッドシートにデータを書き込む方法を説明します。Google Sheets APIを利用することで、プログラムから直接スプレッドシートにデータを追加、更新、削除することができます。この記事を通して、Google Sheets APIの基本的な使い方とGo言語での実装方法を理解することができます。

2. 対象読者

  • Go言語の基本的な知識を持っている方
  • Google Sheets APIを使ってスプレッドシートを操作したい方
  • クラウドサービスとプログラムの連携に興味がある方

3. 記事を読むメリット

この記事を読むことで、以下の内容を学ぶことができます。

  • Google Sheets APIのセットアップと認証
  • Go言語でGoogle Sheets APIに接続する方法
  • スプレッドシートにデータを書き込むサンプルコードの実装

4. 本文

4.1 前提条件

  • Goの開発環境がセットアップされていること
  • Google Cloud Platformのプロジェクトが作成されていること
  • Google Sheets APIが有効化されていること
  • APIクレデンシャル(サービスアカウントキー)がダウンロードされていること

google cloud上でのセットアップは、https://note.com/s_t877/n/n7ce48a6e945f
で行いました。

4.2 スプレッドシートIDの取得方法

スプレッドシートIDは、GoogleスプレッドシートのURLから取得できます。次の手順でIDを取得します。

  1. Googleスプレッドシートをブラウザで開きます。
  2. ブラウザのアドレスバーに表示されているURLを確認します。URLは通常、次のような形式になっています。
https://docs.google.com/spreadsheets/d/—your-spreadsheet-id—/edit#gid=0
  1. このURLの中で、/d//editの間にある部分がスプレッドシートIDです。この部分をコピーして、プログラムで使用します。

例えば、URLが https://docs.google.com/spreadsheets/d/1A2B3C4D5E6F7G8H9I0J/edit#gid=0 の場合、スプレッドシートIDは 1A2B3C4D5E6F7G8H9I0J です。

4.3 サンプルコードの実装

以下のコードは、Google Sheets APIを使ってスプレッドシートにデータを書き込むGoプログラムです。

package main

import (
	"context"
	"fmt"
	"io/ioutil"
	"log"

	"golang.org/x/oauth2/google"
	"google.golang.org/api/option"
	"google.golang.org/api/sheets/v4"
)

// Google Sheets APIクライアントを作成
func newSheetsClient(ctx context.Context, credentialsPath string) (*sheets.Service, error) {
	// credentials.jsonファイルを読み込む
	b, err := ioutil.ReadFile(credentialsPath)
	if err != nil {
		return nil, fmt.Errorf("クライアントシークレットファイルを読み込めません: %v", err)
	}

	// JWT認証を使ってクレデンシャルを作成
	config, err := google.JWTConfigFromJSON(b, sheets.SpreadsheetsScope)
	if err != nil {
		return nil, fmt.Errorf("クライアントシークレットファイルを設定に変換できません: %v", err)
	}

	// HTTPクライアントを作成
	client := config.Client(ctx)
	return sheets.NewService(ctx, option.WithHTTPClient(client))
}

// スプレッドシートにデータを書き込む
func updateSheet(srv *sheets.Service, spreadsheetID, writeRange, value string) error {
	// 書き込むデータを設定
	valueRange := &sheets.ValueRange{
		Values: [][]interface{}{{value}}, // ここでは単一のセルに単一の値を書き込む
	}

	// データを書き込む
	_, err := srv.Spreadsheets.Values.Update(spreadsheetID, writeRange, valueRange).ValueInputOption("RAW").Do()
	return err
}

func main() {
	ctx := context.Background()

	// Google Sheets APIのクライアントを作成
	sheetsClient, err := newSheetsClient(ctx, "---path/to/your/credentials.json---")
	if err != nil {
		log.Fatalf("Sheetsクライアントの作成に失敗しました: %v", err)
	}

	// スプレッドシートIDと範囲を指定
	spreadsheetID := "---your-spreadsheet-id---" // スプレッドシートIDを指定
	writeRange := "Sheet1!A1"              // データを書き込むシートとセル範囲を指定

	// シートにデータを書き込む
	err = updateSheet(sheetsClient, spreadsheetID, writeRange, "Hello, Google Sheets!")
	if err != nil {
		log.Fatalf("シートの更新に失敗しました: %v", err)
	}

	fmt.Println("データがスプレッドシートに正常に書き込まれました!")
}

4.4 コードの説明

  • newSheetsClient: Google Sheets APIのクライアントを作成する関数です。JWT認証を使ってGoogle Sheets APIにアクセスします。
  • updateSheet: 指定されたスプレッドシートのセルにデータを書き込む関数です。
  • main: プログラムのエントリーポイントです。Google Sheets APIクライアントの作成、スプレッドシートへのデータ書き込みを行います。

4.5 実行方法

  1. クレデンシャルファイルのパスとスプレッドシートIDをコード内の---path/to/your/credentials.json------your-spreadsheet-id---の部分に設定します。
  2. プログラムを実行します。正常に実行されると、指定したスプレッドシートにデータが書き込まれます。

5. まとめ

この記事では、Google Sheets APIを使用してGo言語でスプレッドシートにデータを書き込む方法を説明しました。Google Sheets APIを使うことで、プログラムからスプレッドシートを簡単に操作できるようになります。これを活用して、データの自動更新やデータ分析などの様々な用途に応用することができます。

次のステップとして、より複雑なデータの操作や読み取りなど、Google Sheets APIの他の機能も試してみてください。

Discussion