【问题标题】:Create spreadsheet with Google Sheets API V4 API Key使用 Google Sheets API V4 API 密钥创建电子表格
【发布时间】:2018-10-08 20:11:23
【问题描述】:

我已经知道如何从我创建的预算电子表格中读取值,但我不知道如何使用 Sheets API V4 创建新的电子表格。到现在为止,我已经为这个问题苦苦挣扎了 5 个月,以前有人解决过这个问题吗?

这是我的代码:

// READ - WORKING!
router.get("/get", (req, res) => {
  var id = '1LoSF_4Z9aoiVvDsjFV9CMOd--vvz3fERfOPajVb2sv8';  
  var params = 'https://sheets.googleapis.com/v4/spreadsheets/?key='
  var url = params + apiKey;
  request(`https://sheets.googleapis.com/v4/spreadsheets/${id}?key=${apiKey}`, (error, response, body) => {
    console.log("Body", body);
  });
})

// Create - NOT WORKING!
router.post('/create', (req,res)=>{
  request({
    method: 'POST',
    uri: `https://sheets.googleapis.com/v4/spreadsheets?fields=properties%2Ftitle&key=${apiKey}`
  }, (error, response, body)=>{

    console.log(body);
    //Logs the body of the newly created spreadsheet

  })
})

我使用了 Google API Explorer 中的指南,您可以在这里找到:

https://developers.google.com/apis-explorer/#p/sheets/v4/sheets.spreadsheets.create

谢谢!

【问题讨论】:

  • Sheets API的create方法不能被API key使用。那么如何使用 OAuth2 和服务帐户呢?
  • 谢谢!所以很高兴知道。我确实在另一个授权 Google 表格范围的应用程序中设置了 OAuth2。如何执行将 OAuth 访问令牌传递给工作表 api 并创建电子表格的 POST 请求?你有一个如何做到这一点的例子吗?我理解这个概念,但我从未见过它被使用过。
  • 感谢您的回复。可以问一下你的情况吗?您已经从 OAuth2 进程中检索了访问令牌。您可以使用访问令牌。我的理解正确吗?
  • 是的,这是正确的。使用 OAuth 进行身份验证后,我从 Google 返回了访问令牌。有了这个令牌,我现在可以在我自己的驱动器或登录的任何人中发布以创建电子表格。您还有其他问题吗?
  • 感谢您的回复。我发布了修改后的脚本作为答案。你能确认一下吗?在这个修改后的脚本中,使用了您检索到的访问令牌。当您使用 Sheets API 创建电子表格时,请在范围中包含 https://www.googleapis.com/auth/spreadsheets。如果这不是您想要的,我很抱歉。

标签: javascript node.js request google-sheets-api


【解决方案1】:

这个修改怎么样?

修改点:

  • 使用访问令牌添加headers。
  • 添加body 以提供创建的电子表格的标题。

修改脚本:

request({
    method: 'POST',
    uri: 'https://sheets.googleapis.com/v4/spreadsheets?fields=properties%2Ftitle%2CspreadsheetId',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({properties: {title: "sampleTitle"}}),
}, (error, response, body) => {
    console.log(body);
});

注意:

  • 当您使用此脚本时,请使用包括https://www.googleapis.com/auth/spreadsheets 的访问令牌到作用域。此范围用于创建电子表格。

参考:

【讨论】:

  • 最好还请求创建的 Google 表格文件的 spreadsheetId,以便可以立即使用(而不仅仅是 title 字段)
  • @tehhowch 感谢您的评论。我按照用户的查询参数。但我也认为您的评论将对用户的情况有用。所以我更新了脚本。
  • 知道了!谢谢。
  • 您好!如何使用 API Key 管理它?我不想一直刷新令牌...
  • @M. Mariscal 不幸的是,API 密钥不能使用 Sheets API 的 create 方法。对于当前的规范,我深表歉意。
【解决方案2】:

我真的让它工作了!与之前的回复类似(谢谢 Tanaike !!!)。

request({
method: 'POST',
url: 'https://sheets.googleapis.com/v4/spreadsheets',
headers:{
  'Authorization': 'Bearer (access token goes here)'
},
body: JSON.stringify({
  properties: {
    title: "Spreadsheet Title Goes Here"
  }
})}, (error, response, body)=>{
    if(!error && response.statusCode == 200){
      var info = JSON.parse(body);
      console.log(info);
    } else {
      console.log(error);
    }
  })

【讨论】:

  • 很高兴您的问题得到了解决。但很抱歉我帮不上忙。
  • 如果我看到您的回复,我会解决它,因为它们几乎相同。你确实解决了,谢谢!
  • 谢谢。如果您的问题已解决,请接受它作为已解决的问题。这对有同样问题的用户很有用。
  • 您好,请问您是如何获得访问令牌的?
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多