标签: google-sheets-api

如何更改 Google 表格电子表格的所有者?

通过以下内容,我可以以编程方式在 Google 表格中创建电子表格,但该表格的所有者是开发者帐户(一个以“gserviceaccount.com”结尾的疯狂字符串),而我的普通帐户无法查看该电子表格。我还需要做什么才能将 Google 用户添加到读/写权限?

from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery

# ... json_key is the json blob that has the credentials
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_dict(json_key, scope)
service = discovery.build('sheets', 'v4', credentials=credentials)

spreadsheet = {
  "properties": {"title": "my test spreadsheet"}
}

service.spreadsheets().create(body=spreadsheet).execute()
Run Code Online (Sandbox Code Playgroud)

编辑:
我尝试将范围更改为,['https://www.googleapis.com/auth/drive']但下面的答案仍然对我不起作用。当我跑步时

print [xx for xx in dir(service) if not xx.startswith('_')]
Run Code Online (Sandbox Code Playgroud)

我明白了

['new_batch_http_request', u'spreadsheets']
Run Code Online (Sandbox Code Playgroud)

换句话说,这不是我定义的服务permissions()中的方法。service我应该采取什么不同的做法?

python permissions google-sheets google-sheets-api

2
推荐指数
1
解决办法
3122
查看次数

在运行 BigQuery 作业之前确定资源使用情况

我已成功将 Big Query 与 Google Sheets 集成。
由于我使用动态参数来决定查询的性质(例如时间范围),因此我想了解查询的“成本” - 运行需要多少 MB(或 KB 或 GB)。

在运行查询之前有什么办法可以得到这样的指示吗?

google-sheets google-bigquery google-sheets-api

2
推荐指数
1
解决办法
68
查看次数

如何在 Google Apps 脚本中获取发布到网络电子表格的 ID

我有一个脚本,它从电子表格中获取行,并为每一行创建单独的电子表格文件。然后脚本将它们发布到网络上。

我无法获得的是 id,它允许我获得它的网络版本的 url。

常规电子表格 ID 如下所示:

1N8h00iN2L7aaUbI9TYRWioaZHjHNSc_vNucCbVADj1o

发布到网络的 id 如下所示:

2PACX-1vTPSkv4Rz7CqwabTTfxa3xcVF-Gzxu7IboLyLkfoShP2d3qdX8o0qdvk5d_nWZD2rq43E2LXmVAm5HI

(更长,以2PACX-开头)

有人知道怎么做吗?

提前致谢。

google-sheets google-apps-script google-sheets-api

2
推荐指数
1
解决办法
2790
查看次数

通过 API 调用使用 RGBA 颜色格式化单元格

我正在使用 Google Sheets v4 API,并且想使用 Google Sheets UI 上提供的橙色 FF9900,但 API 中的 RGBA 不遵循标准颜色 RGBA。从这个工具中,我得到橙色的 rgba(236, 161, 51, 1)。

这是我使用 Google API Explorer 的请求代码:

{
        requests: [{  
          repeatCell: {
            range:{
              sheetId: correctsheetid,
              startRowIndex: 2,
              endRowIndex: 3,
            },
            cell:{
              userEnteredFormat:{
                backgroundColor: {
                  red: 236, 
                  green: 161, 
                  blue: 51
                }
              }
            },
            fields: 'userEnteredFormat(backgroundColor)'
          }
        }]
      }
Run Code Online (Sandbox Code Playgroud)

但是,工作表上的输出是蓝色的,而不是预期的橙色。

google-sheets google-sheets-api

2
推荐指数
1
解决办法
1557
查看次数

未记录的 Sheet API 限制问题

我已经看过人们遇到类似问题的帖子,但找不到明确的答案。

我尝试使用以下代码行检索 264735 个插槽的二维数组:

  var optionalArguments = {majorDimension: "ROWS",
                     valueRenderOption: "FORMULA",
  };
  var sourceValuesObject = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeA1Notation, optionalArguments)
Run Code Online (Sandbox Code Playgroud)

但这是我得到的:

响应代码:413。消息:响应太大。

这看起来很奇怪,因为我看不到这种限制写在任何地方,加上如果 300000 个或更少的单元格导致 API 错误,用户如何获取大量数据。

我尝试过拆分请求并且它有效,但这使我的代码变得更加复杂且速度更慢,而且在尝试将值更新回工作表范围时我得到空响应。

我指向正确的方向吗?这是正常的吗?有解决方法吗?

编辑: 这是一个示例电子表格

首先,我尝试使用循环Sheets.Spreadsheets.Values.get 内部来获取分割范围for,并且它有效。

做同样的事情batchGet会给我同样的错误,所以我想单元格内的数据太大了。

javascript google-apps-script http-status-code-413 google-sheets-api

2
推荐指数
1
解决办法
1111
查看次数

Google Sheets API——自动获取工作表的最大范围

众所周知,为了从 Google Sheets API 中的行列中获取值,格式如下:

gapi.client.sheets.spreadsheets.values.get({
  spreadsheetId: id,
  range: "myData!A1:E" 
}).then(res => {
  console.log(res.result);
}, err => console.log(err));
Run Code Online (Sandbox Code Playgroud)

请注意,“范围”必须在特定参数内,但如何简单地获取最大范围内的值?是否有像“myData!Min:Max”这样的简写?我知道您可以提出另一个请求来获取最大行和列长度:

sheets.spreadsheets.get({
    spreadsheetId: id,
    ranges: [],
    auth: something
}, (err, resp) => {
    var sheetOne = resp.data.sheets[0];
    console.log(sheetOne.properties.gridProperties); // { rowCount: 1024, columnCount: 7 } (for example)
})
Run Code Online (Sandbox Code Playgroud)

然后一旦我有了,理论上我可以使用数字到字母的切换系统自动生成范围字符串以获取列字母名称或类似的内容,并发出另一个请求以获取最大列,但首先:

  1. 制作一个从数字最大值返回字母格式范围的函数可能很复杂
  2. 即便如此,我只想获取其中包含非空值的范围;如果我有一个 1000 行的电子表格,但只使用前 20 行和列,那么我想自动将范围限制为实际值。

有什么办法可以用 API 来做到这一点吗?

google-sheets node.js google-api-nodejs-client google-sheets-api

2
推荐指数
1
解决办法
8363
查看次数

如何使用 PyGSheets v2 在特定文件夹/目录中创建新工作表?

我想使用 PyGSheets 在我的 Google Drive 文件夹中创建电子表格。我还希望能够设置使用代码创建工作表的目录/文件夹。具体来说,我想输入一个类似于 URL 的字符串,甚至只是文件夹的名称。
我已经查看了 PyGSheets 文档和“电子表格”模型。我还没有找到任何接受文件夹名称或目录地址的类。也没有用于将工作表从一个文件夹移动到另一个文件夹的类。使用 PyGSheets 可以进行任一操作吗?


截至 5 月 5 日,我已使用解决此问题的方法。要获取云端硬盘中文件夹的 ID,我右键单击目标文件夹,然后从出现的菜单中选择“获取可共享链接”。我复制链接并将其粘贴到任何文本编辑器中。该链接如下所示:https://drive.google.com/open?id =9JHS74hgls049J50 。我复制“id =”关键字后面的随机字符串。这就是我使用 PyGSheets 创建文件夹时提供的值:

shtTargetedCreate = con.create("Test Folder",folder="1GwA4W8iv-26BvG48nKnEigYqDL8SpUGK")
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?

google-drive-api google-sheets-api pygsheets

2
推荐指数
1
解决办法
1820
查看次数

如何通过 Python 使用 SHEET API v4 删除 google 电子表格中的行?

我的代码如下

def write_cells(spreadsheet_id, update_data):
updating = sheet_service.spreadsheets().values().\
        batchUpdate(spreadsheetId=spreadsheet_id, body=update_data)
updating.execute()

spreadsheet_data = [
    { 
        "deleteDimension": {
        "range": {
          "sheetId": sheet_id,
          "dimension": "ROWS",
          "startIndex": 5,
          "endIndex": 100
         }              
        }
       }
]    

update_spreadsheet_data = {
    'valueInputOption': 'USER_ENTERED',
    'data': spreadsheet_data
}

update_data = update_spreadsheet_data

write_cells(spreadsheet_id, update_data)
Run Code Online (Sandbox Code Playgroud)

我有以下错误消息

HttpError                                 Traceback (most recent call last)
<ipython-input-64-0ba8756b8e85> in <module>()
----> 1 write_cells(spreadsheet_id, update_data)
Run Code Online (Sandbox Code Playgroud)

2帧

/usr/local/lib/python3.6/dist-packages/googleapiclient/http.py in execute(self, http, num_retries)
    838       callback(resp)
    839     if resp.status >= 300:
--> 840       raise HttpError(resp, content, uri=self.uri)
    841     return self.postproc(resp, …
Run Code Online (Sandbox Code Playgroud)

google-sheets python-3.x google-sheets-api google-colaboratory

2
推荐指数
1
解决办法
7796
查看次数

如何在 google apis explorer 中定义 API Key?

我只是在以下位置测试 Google Sheets API:

https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append

我正在使用该Try this API部分填写请求参数并执行请求(向工作表追加一行)。

我遵循了Step 1这里:

https://developers.google.com/sheets/api/quickstart/js

为了:

  • 启用 Google Sheets API
  • 创建 API 密钥

因此,我有:

  • 客户编号
  • 客户机密
  • API 密钥

Try this API>Credentials部分,有两个复选框:

  • 谷歌 OAuth 2.0
  • API 密钥

我尝试uncheckGoogle OAuth 2.0选项,这样我可以使用刚刚发出请求API Key-但我看不到,我可以进入API Key

在此处输入图片说明

如何在Try this API部分中定义 API 密钥,以便我可以仅使用API Key(而不是Google OAuth 2.0 )发出请求。

google-apis-explorer google-sheets-api

2
推荐指数
1
解决办法
318
查看次数

如何修复“google.auth.exceptions.RefreshError: ('No access token in response.” 尝试使用 GoogleSheet API 打开电子表格时

我一步一步地关注了 TechWithTim 的视频 ( https://www.youtube.com/watch?v=cnPlKLEGR7E ),但是当我尝试打开工作表时仍然出现错误。代码工作正常,直到sheet = client.open("GuildTaxes").sheet1行。这是我的代码。

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/sprea...",
        "https://www.googleapis.com/auth/drive...","https://www.googleapis.com/auth/drive"]

creds = ServiceAccountCredentials.from_json_keyfile_name("GuildTaxes-9ba4508be840.json", scope)

client = gspread.authorize(creds)

sheet = client.open("GuildTaxes").sheet1

data = sheet.get_all_records()

print(data)
Run Code Online (Sandbox Code Playgroud)

python gspread google-sheets-api

2
推荐指数
1
解决办法
4076
查看次数