我有一个谷歌电子表格。我使用python脚本和google sheets python api来操作我的工作表。我首先使用setBasicFilterRequest
在我的google工作表上设置基本过滤器,如下所示:
setBasicFilterRequest = {
'setBasicFilter' : {
'filter' : _filter
}
}
body = {
'requests' : [setBasicFilterRequest],
}
resp = service.spreadsheets() \
.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute()
这在我的电子表格上设置了一个过滤器,当我在浏览器上看到它时,我只看到过滤过的行。这是伟大的。现在在这个脚本中,我想得到当前在我的浏览器上的工作表上可见的范围。例如,当我设置我的基本筛选器时,谷歌工作表视图被更新为只显示筛选的行,我看到行[2, 11, 27, 31, 55]
。现在,我想在我的python脚本中获取这个列表。这有可能实现吗?
我相信你的目标如下。
不幸的是,在这种情况下,无法直接从Sheets API检索行号。所以要求做到以下流程。
rowMetadata
当此流反映到脚本时,它将变成如下所示。
在这个示例脚本中,请使用您的授权脚本用于凭据=creds
的creds
。
spreadsheet_id = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
service = build('sheets', 'v4', credentials=creds)
fields = 'sheets(data(rowMetadata(hiddenByFilter)))'
res = service.spreadsheets().get(spreadsheetId=spreadsheet_id, ranges=sheetName, fields=fields).execute()
filteredRows = {"shownRows": [], "hiddenRows": []}
rowMetadata = res["sheets"][0]["data"][0]["rowMetadata"]
for i, r in enumerate(rowMetadata):
filteredRows["hiddenRows" if "hiddenByFilter" in r and r["hiddenByFilter"] else "shownRows"].append(i + 1)
print(filteredRows)
工作表(数据(行元数据(hiddenByFilter))
用作字段
当运行上述脚本时,将获得以下结果。
{
"shownRows": [#, #, #,,,],
"hiddenRows": [#, #, #,,,]
}
show nRow
是基本筛选器显示的行号。
hiddenRow
是基本筛选器隐藏的行号。
从前面的问题中,我认为您已经了解了使用查询语言的方法。所以在这个答案中,我介绍了使用Sheets API的方法
方法:spreadsheets.get
我正在尝试从特定目录中的google工作表列表(大约570个工作表)中删除多余的行和列(已知范围)。 我能够使用google drive API获取电子表格Id。但是,修改页面的尺寸需要图纸Id。 我无法找到通过驱动器API(文件属性)检索此工作表ID的方法,也无法找到任何关于如何在电子表格中列出可用工作表的留档,因为我有电子表格ID。 我尝试使用谷歌应用程序脚本来达到我的目标,但运行时间已经超过
我的程序是这样工作的:
问题内容: 使用Zuul作为过滤器的代理时,如何读取响应正文? 我试图像这样调用代码: 问题答案: 我设法克服了这一点。该解决方案包括4个步骤: 读入ByteArrayOutputStream 将OutputStream复制到2 InputStreams。 使用其中之一进行自定义。 使用第二个重新分配上下文: 从点1读取流将导致无法再次读取该流,因此,您将传递尚未读取的新的新鲜流
问题内容: Gdata提供了一种基于时间戳仅从Google电子表格中获取更改的单元格的方法。如何为Gdata调用创建时间戳? 即“将仅返回发布时间等于或晚于指定时间戳记的条目。” setPublishedMax()https://developers.google.com/gdata/javadoc/com/google/gdata/client/Query#setPublishedMax (co
我计划使用Google电子表格API从电子表格中获取数据,并使用Sencha Touch在我的移动应用程序中呈现数据。我看过一些解释如何获取和解析数据的博客和教程,但当我尝试同样的方法时,我没有在object中获取列数据作为属性,而是在标记中获取逗号分隔的数据。 举个例子,下面是一个示例电子表格,其中包含更改标题和数据: https://docs.google.com/spreadsheet/cc
问题内容: 我定义了一个,并且具有带有Spring注释的Java类。 我想将Bean 放入我的,因此尝试了以下操作: 但是它总是返回。我怎样才能得到一个Spring bean? 问题答案: 尝试: 你的bean在应用程序上下文中的名称/标识在哪里。甚至更好: 还可以看看GenericFilterBean及其子类。