Golangを使用してサービスアカウントの認証情報でGoogleスプレッドシートにアクセスできません

ラフルサタール:

Golangを使用して、URLを入力としてスプレッドシートにアクセスして更新するためのAWS Lambdaコードを書いています。これまでのところ、Googleガイド-https://developers.google.com/sheets/api/quickstart/goを実行することで、OAuthクライアントIDを使用してローカルでスプレッドシートにアクセスできます。

しかし、AWS Lambdaからコードを実行したいので、Googleサービスアカウントを使用して認証を実行したいと思います。サービスアカウントを作成し、以下の情報を含む認証情報を受け取りました。

{
"type": "service_account",
"project_id": "quickstart-1XXXXXXX806",
"private_key_id": "a1XXXXXXXXXXXXXXXXXXXXX3c3e5d8e",
"private_key": "-----BEGIN PRIVATE KEY-----\nMZ4C8......\nD\n-----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "1XXXXXXXXXXXXXXXXX2",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/lambda%40quickstart-1573627656806.iam.gserviceaccount.com"

}

多くのドキュメントを読みましたが、Golangコードを使用したGoogleサービスアカウントを使用してGoogleスプレッドシートにアクセスするためのリファレンスが見つかりませんでした。すべてのドキュメントは次のGithubリンクを参照しています-https ://github.com/googleapis/google-api-go-clientしかし、最近Golangでの作業を開始したばかりなので、実装方法がよくわかりません。Googleガイドを読んだ後、次のようにサービスアカウントに必要なフローを理解しました-ここに画像の説明を入力してください

しかし、私はまだこのためのGolangコードを書くことができません。誰かがいくつかの参照を共有できれば幸いです:)

ラフルサタール:

@ZektorHの回答は、このコードを完成させるのに役立ちました。以下は、サービスアカウントを使用してGoogleスプレッドシートからデータを取得するための完全な実用例です。

package main

import (
    "fmt"
    "log"

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


func main() {

    // Create a JWT configurations object for the Google service account
    conf := &jwt.Config{
        Email:        "[email protected]",
        PrivateKey:   []byte("-----BEGIN PRIVATE KEY-----\nxxxxxx\n-----END PRIVATE KEY-----\n"),
        PrivateKeyID: "a1a6xxxxxxxxxxxxxxxxxxxxxxxe5d8e",
        TokenURL:     "https://oauth2.googleapis.com/token",
        Scopes: []string{
            "https://www.googleapis.com/auth/spreadsheets.readonly",
        },
    }

    client := conf.Client(oauth2.NoContext)

    // Create a service object for Google sheets
    srv, err := sheets.New(client)
    if err != nil {
        log.Fatalf("Unable to retrieve Sheets client: %v", err)
    }

    // Change the Spreadsheet Id with yours    
    spreadsheetId := "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"

    // Define the Sheet Name and fields to select
    readRange := "Sheet1!A2:B"

    // Pull the data from the sheet
    resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
    if err != nil {
        log.Fatalf("Unable to retrieve data from sheet: %v", err)
    }

    // Display pulled data
    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[1])
        }
    }
}

また、次のようなエラーが発生した場合も注意してください。

googleapi:エラー403:呼び出し元に権限がありません、禁止されています

その後、おそらくあなたはあなたのグーグルアカウントにそのスプレッドシートにアクセスする許可を与えていません。もしそうなら

  • ブラウザで、操作したいGoogleシートに移動するだけです。

  • 画面右上の共有に移動します。

  • 詳細設定に移動して、サービスアカウントのメールアドレスと共有します。[email protected]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DockerContainer内のContainerOSでGoogleCloudサービスアカウントの認証情報にアクセスします

分類Dev

AutoMLバッチ予測を使用して作成された長時間実行オペレーションにアクセスするには、オペレーション名とサービスアカウントの認証情報のみが必要です

分類Dev

サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

分類Dev

サービスアカウントの認証情報モードを使用したFirebaseディストリビューションAndroidアプリでアクセスが拒否されました

分類Dev

Node.jsを使用してGoogleサービスアカウントを認証できません

分類Dev

サービスアカウントとユーザー認証情報の両方を使用してgcloudcliを認証できますか?

分類Dev

Googleサービスアカウントの認証情報が正しく構成されていません-Jenkins経由のAPKパブリッシャー

分類Dev

GolangでGoogleサービスアカウントの認証情報を手動で提供する

分類Dev

サービスアカウントを使用してGoogleスプレッドシートにアクセスするときにコールバックが定義されていません

分類Dev

Google ComputeEngineでアプリケーションのデフォルトの認証情報を使用してSheetsAPIにアクセスします

分類Dev

ローカルホストの代わりにIPアドレスを使用してWebアプリケーションにアクセスできません

分類Dev

google- / playstoreアカウントなしでAndroidの位置情報サービスを使用できますか?

分類Dev

どのように私は、サービスアカウントの資格情報を使用してGoogleチームドライブ内のフォルダにファイルをアップロードすることができますか?

分類Dev

アプリケーションのデフォルト認証情報でGoogle App Engineサービスアカウントの認証情報を作成できない

分類Dev

レプリケーションコントローラーとサービスを使用して、ポート15672でrabbitmqにアクセスできません

分類Dev

Railsのカスタムレイアウトを使用してビューのインスタンス変数にアクセスできません

分類Dev

C#アプリケーションでJSONファイルを使用するGoogleBigQueryサービスアカウントの認証情報

分類Dev

(PHP) oauth およびサービス アカウントを使用してプライベート Google フォト (Picasa Web) API 情報にアクセスする

分類Dev

サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

分類Dev

デフォルトのサービスアカウントとGoogleクラウドライブラリを使用してGoogle Kubernetes EngineからGoogle Cloud Storageにアクセスできません

分類Dev

サービスアカウントを使用してKeycloakREST Admin APIにアクセスします(クライアント資格情報の付与)

分類Dev

Javaを使用してサービスアカウントのGoogleドライブ内のファイルのgetWebContentLink()プロパティにアクセスできません

分類Dev

Google AdminSDK-サービスアカウントがリソースにアクセスできません

分類Dev

フレックスレイアウトを使用して、ウィンドウの中央にマットカードを配置できません

分類Dev

サービスアカウントを使用して、DoubleClick入札マネージャーApiに認証できません

分類Dev

異なるサービスアカウントの認証情報でGoogleAPIを認証する方法は?

分類Dev

Googleマーケットプレイスのアプリを更新できません-アカウントがこのクラウドプロジェクトまたはアプリと同じドメインに属していません

分類Dev

zookeeperを使用してクリックハウス3ノード循環クラスターをセットアップすると、クリックハウスレプリカ/サーバーが相互に接続できません

分類Dev

セレンPythonを使用してウェブサイトのグーグルアラートでサインインにアクセスできません

Related 関連記事

  1. 1

    DockerContainer内のContainerOSでGoogleCloudサービスアカウントの認証情報にアクセスします

  2. 2

    AutoMLバッチ予測を使用して作成された長時間実行オペレーションにアクセスするには、オペレーション名とサービスアカウントの認証情報のみが必要です

  3. 3

    サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

  4. 4

    サービスアカウントの認証情報モードを使用したFirebaseディストリビューションAndroidアプリでアクセスが拒否されました

  5. 5

    Node.jsを使用してGoogleサービスアカウントを認証できません

  6. 6

    サービスアカウントとユーザー認証情報の両方を使用してgcloudcliを認証できますか?

  7. 7

    Googleサービスアカウントの認証情報が正しく構成されていません-Jenkins経由のAPKパブリッシャー

  8. 8

    GolangでGoogleサービスアカウントの認証情報を手動で提供する

  9. 9

    サービスアカウントを使用してGoogleスプレッドシートにアクセスするときにコールバックが定義されていません

  10. 10

    Google ComputeEngineでアプリケーションのデフォルトの認証情報を使用してSheetsAPIにアクセスします

  11. 11

    ローカルホストの代わりにIPアドレスを使用してWebアプリケーションにアクセスできません

  12. 12

    google- / playstoreアカウントなしでAndroidの位置情報サービスを使用できますか?

  13. 13

    どのように私は、サービスアカウントの資格情報を使用してGoogleチームドライブ内のフォルダにファイルをアップロードすることができますか?

  14. 14

    アプリケーションのデフォルト認証情報でGoogle App Engineサービスアカウントの認証情報を作成できない

  15. 15

    レプリケーションコントローラーとサービスを使用して、ポート15672でrabbitmqにアクセスできません

  16. 16

    Railsのカスタムレイアウトを使用してビューのインスタンス変数にアクセスできません

  17. 17

    C#アプリケーションでJSONファイルを使用するGoogleBigQueryサービスアカウントの認証情報

  18. 18

    (PHP) oauth およびサービス アカウントを使用してプライベート Google フォト (Picasa Web) API 情報にアクセスする

  19. 19

    サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

  20. 20

    デフォルトのサービスアカウントとGoogleクラウドライブラリを使用してGoogle Kubernetes EngineからGoogle Cloud Storageにアクセスできません

  21. 21

    サービスアカウントを使用してKeycloakREST Admin APIにアクセスします(クライアント資格情報の付与)

  22. 22

    Javaを使用してサービスアカウントのGoogleドライブ内のファイルのgetWebContentLink()プロパティにアクセスできません

  23. 23

    Google AdminSDK-サービスアカウントがリソースにアクセスできません

  24. 24

    フレックスレイアウトを使用して、ウィンドウの中央にマットカードを配置できません

  25. 25

    サービスアカウントを使用して、DoubleClick入札マネージャーApiに認証できません

  26. 26

    異なるサービスアカウントの認証情報でGoogleAPIを認証する方法は?

  27. 27

    Googleマーケットプレイスのアプリを更新できません-アカウントがこのクラウドプロジェクトまたはアプリと同じドメインに属していません

  28. 28

    zookeeperを使用してクリックハウス3ノード循環クラスターをセットアップすると、クリックハウスレプリカ/サーバーが相互に接続できません

  29. 29

    セレンPythonを使用してウェブサイトのグーグルアラートでサインインにアクセスできません

ホットタグ

アーカイブ