Google 文档 - 访问数据
Google docs - access data
我想访问 public google 文档中的数据。
https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
link 正在工作。
我使用的代码:
package main
import (
"context"
"fmt"
"log"
"google.golang.org/api/docs/v1"
"google.golang.org/api/option"
)
var docURL = "https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0"
func main() {
ctx := context.Background()
srv, err := docs.NewService(ctx, option.WithoutAuthentication(), option.WithEndpoint(docURL))
if err != nil {
log.Fatalf("Unable to retrieve Docs client: %v", err)
}
// Prints the title of the requested doc:
// https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
docId := "12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE"
doc, err := srv.Documents.Get(docId).Do()
if err != nil {
log.Fatalf("Unable to retrieve data from document: %v", err)
}
fmt.Printf("The title of the doc is: %s\n", doc.Title)
}
它returns404没有找到。我做错了什么?
当我看到您显示 https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
的 URL 时,它用于 Google 电子表格,而不是 Google 文档。所以在这种情况下,无法使用 Google Docs API 检索此文件。请注意这一点。
当您想从此公开共享的 Google 电子表格中检索值时,进行以下修改如何?在这种情况下,使用 Sheets API v4。请注意这一点。
修改后的脚本:
在当前阶段,如果没有 API 密钥和访问令牌,则无法使用 Sheets API v4。这似乎是当前的规范。所以我认为在你的脚本中,你的 srv
不能用于从 Google 电子表格中检索值,即使它是公开共享的。我认为您当前的问题可能是由于这种情况造成的。在您的情况下,您的电子表格是公开共享的。因此,为了检索值,可以按如下方式使用 API。
package main
import (
"context"
"fmt"
"log"
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
)
func main() {
APIkey := "###" // Please set your API key.
ctx := context.Background()
srv, err := sheets.NewService(ctx, option.WithAPIKey(APIkey))
if err != nil {
log.Fatalf("Unable to retrieve Docs client: %v", err)
}
spreadsheetId := "12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE"
res, err := srv.Spreadsheets.Get(spreadsheetId).Do()
if err != nil {
log.Fatalf("Unable to retrieve data from document: %v", err)
}
fmt.Printf("The title of the doc is: %s\n", res.Properties.Title)
}
结果:
当此脚本 运行 使用有效的 API 密钥时,将获得以下结果。
The title of the doc is: test
注:
- 如果你的样本是公开分享的 Google 文档,不幸的是,在当前阶段,Google 文档 API 不能与 API 键一起使用,即使该文档是公开共享的。这似乎是当前的规范。请注意这一点。在这种情况下,请使用访问令牌。示例脚本可以在 here.
中看到
参考:
我想访问 public google 文档中的数据。
https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
link 正在工作。
我使用的代码:
package main
import (
"context"
"fmt"
"log"
"google.golang.org/api/docs/v1"
"google.golang.org/api/option"
)
var docURL = "https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0"
func main() {
ctx := context.Background()
srv, err := docs.NewService(ctx, option.WithoutAuthentication(), option.WithEndpoint(docURL))
if err != nil {
log.Fatalf("Unable to retrieve Docs client: %v", err)
}
// Prints the title of the requested doc:
// https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
docId := "12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE"
doc, err := srv.Documents.Get(docId).Do()
if err != nil {
log.Fatalf("Unable to retrieve data from document: %v", err)
}
fmt.Printf("The title of the doc is: %s\n", doc.Title)
}
它returns404没有找到。我做错了什么?
当我看到您显示 https://docs.google.com/spreadsheets/d/12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE/edit#gid=0
的 URL 时,它用于 Google 电子表格,而不是 Google 文档。所以在这种情况下,无法使用 Google Docs API 检索此文件。请注意这一点。
当您想从此公开共享的 Google 电子表格中检索值时,进行以下修改如何?在这种情况下,使用 Sheets API v4。请注意这一点。
修改后的脚本:
在当前阶段,如果没有 API 密钥和访问令牌,则无法使用 Sheets API v4。这似乎是当前的规范。所以我认为在你的脚本中,你的 srv
不能用于从 Google 电子表格中检索值,即使它是公开共享的。我认为您当前的问题可能是由于这种情况造成的。在您的情况下,您的电子表格是公开共享的。因此,为了检索值,可以按如下方式使用 API。
package main
import (
"context"
"fmt"
"log"
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
)
func main() {
APIkey := "###" // Please set your API key.
ctx := context.Background()
srv, err := sheets.NewService(ctx, option.WithAPIKey(APIkey))
if err != nil {
log.Fatalf("Unable to retrieve Docs client: %v", err)
}
spreadsheetId := "12i3Lvwb_14fQES27jVP6baqqmWUXWwM7fZy-neDH3bE"
res, err := srv.Spreadsheets.Get(spreadsheetId).Do()
if err != nil {
log.Fatalf("Unable to retrieve data from document: %v", err)
}
fmt.Printf("The title of the doc is: %s\n", res.Properties.Title)
}
结果:
当此脚本 运行 使用有效的 API 密钥时,将获得以下结果。
The title of the doc is: test
注:
- 如果你的样本是公开分享的 Google 文档,不幸的是,在当前阶段,Google 文档 API 不能与 API 键一起使用,即使该文档是公开共享的。这似乎是当前的规范。请注意这一点。在这种情况下,请使用访问令牌。示例脚本可以在 here. 中看到