5

我的工作表名为“doc_name”,它有两个工作表,“sheet1”和“sheet2”。但是,我只能将数据写入标有“sheet1”的工作表?

这是一个限制还是我做错了什么?

这有效,

wks = gc.open("doc_name").sheet1

但这失败了,

wks = gc.open("doc_name").sheet2

给出这个错误,

AttributeError:“电子表格”对象没有属性“sheet2”

我也注意到这失败了,

wks = gc.open("doc_name"). 1

...我在哪里使用大写的“S”..只有当我指定小写时它才会写。第 1

我如何在无需编码的情况下写入工作表... wks = gc.open("doc_name").sheet1?

4

2 回答 2

26

这是因为gspread只实现sheet1了让您检索电子表格中的第一张工作表作为快捷方式

源代码 中你可以看到sheet1正在使用的实现get_worksheet(0)

@property
def sheet1(self):
    """Shortcut property for getting the first worksheet."""
    return self.get_worksheet(0)

因此,如果要检索其他工作表,则需要使用其他方法,例如:

1.将index指定为一个整数,表示要从0开始打开的工作表的位置:

wks = gc.open("doc_name").get_worksheet(index)

或者

2.指定要作为字符串打开的工作表的标题:

wks = gc.open("doc_name").worksheet(title)

也就是说,在您的情况下,要获取 sheet2 您可能可以使用

wks = gc.open("doc_name").get_worksheet(1)

于 2015-11-09T07:19:36.620 回答
3
client = gspread.authorize(creds)

sheet = client.open('name').worksheet('name/title')
于 2019-03-05T10:09:22.883 回答