python 单元格注解和颜色可以用gspread查询吗?

jmp7cifd  于 2023-01-04  发布在  Python
关注(0)|答案(3)|浏览(117)

我正在学习Python和Google API,我想知道在gspread或其他形式中是否可以查询单元格注解和颜色?如果可以,有人能给我指出正确的方向或文档吗?
到目前为止,我已经发现了两个看起来有帮助的东西,但是我真的不知道如何将它们应用到Python中,或者只是使用什么。
Google Apps Scripts - Accessing Cell Notes and Comments
https://github.com/burnash/gspread/issues/50

rt4zxlrg

rt4zxlrg1#

如果你已经点击了GitHub问题的链接,你会发现 * set * a note在GSpread 3.7中已经解决了,但是get被省略了(或者我太笨了,找不到它)。因为我需要它,所以我用Google service对象写了我自己的。假设你已经设置了你的服务帐户凭据(和gspread一样),创建你的service

from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name(filename, scope)
service = discovery.build('sheets', 'v4', credentials=creds)

使用service和电子表格id获得注解:

fields = 'sheets/data/rowData/values/note'
ranges = ["'Sheet1'!A1")]
request = service.spreadsheets().get(spreadsheetId='1IDDMQqAV5t4Rqblahblah', ranges=ranges, fields=fields)
note_json = request.execute()
try:
    note = note_json['sheets'][0]['data'][0]['rowData'][0]['values'][0]['note']  # <-- there's got to be a better way
except KeyError:
    note = None
print(note)

这是独立于gspread模型的,所以它不是很好,但它工作。我希望以更好的方式从note_json中提取注解。

qfe3c7zg

qfe3c7zg2#

我认为如果你先学习Python如何使用Google电子表格会很有帮助。这里是用于电子表格的Python Quickstart。确保你也安装了Google Data Python Library
有一个getBackground()可能对你有用,它返回区域左上角单元格的背景颜色(例如'#ffffff'),不过,可以尝试在Python中找到等价的方法。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
Logger.log(cell.getBackground());

希望这个有用。

esyap4oy

esyap4oy3#

当使用gspread时,至少从5.7.2开始,设置和获取注解都被支持。

import gspread 

url = "https://docs.google.com/spreadsheets/d/u7s6yehrblah....."
gc = gspread.service_account()
gs = gc.open_by_url(url)
sheet = gs.get_worksheet(0)

note = sheet.get_note("A1")
sheet.insert_note("A1", f"{note}? I don't think so!")

我不知道如何一次获取/更新多个注解(如sheet.batch_update()),所以很容易遇到默认的最大值60 API调用/分钟。如果你想防止这种情况发生,Bill Gallagher的方法(手工构造API调用)看起来仍然是更安全(和更快)的选择。

相关问题