我无法使用Powershell脚本处理Google Spreadsheet。
我已经创建了Google表格,创建了Google Cloud Project,启用了Sheets&Drive API,创建了服务帐户,并将其添加到Google Sheet(共享)中。
已安装Google Cloud SDK:
Install-Module GoogleCloud
gcloud init
gcloud auth activate-service-account --key-file .\Documents-eb5947bf353a.json
但请求值范围会引发“ 403(禁止访问)”错误:
$sheetidDocuments = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$rangeDocuments = "Sheet1!XXX:XXX"
$requestUri = "https://sheets.googleapis.com/v4/spreadsheets/$sheetidDocuments/values/$rangeDocuments"
$result = Invoke-RestMethod -Uri $requestUri -Method Get -ContentType "application/json; charset=utf-8"
我不知道为什么。我花了数小时试图修复它,但没有成功。这是服务帐户的工作方式,还是我必须为此使用OAuth2和访问令牌?
我只想读/写工作表。
使用用户帐户而不是服务帐户的其他项目也可以正常工作。
答案 0 :(得分:0)
如DalmTo在评论中所述,您需要将访问令牌传递给API。您可以使用命令gcloud auth print-access-token
从gcloud CLI获取有效的访问令牌。
在执行实际请求之前,请确保获取新令牌,因为它们的使用寿命约为60m,如果令牌不新鲜,您可能会收到过期的令牌响应。
$token = gcloud auth print-access-token
$headers = @{'Authorization' = 'Bearer '+$token}
$result = Invoke-RestMethod -Uri $requestUri -Method Get -ContentType "application/json; charset=utf-8" -Headers $headers
如果您不想使用gcloud的令牌,则必须自己获取令牌,但这需要一些工作。有关详细说明,请参见HTTP/REST section here