社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

tehhowch Tanaike

tehhowch Tanaike 最近创建的主题
tehhowch Tanaike 最近回复了
5 年前
回复了 tehhowch Tanaike 创建的主题 » python-google sheets api-不写入指定范围
  • 你想把 [[max_temp, avg_temp, min_temp]] B-C、E-G和H-J列。

如果我的理解是正确的,那么这次修改怎么样?

修改点:

  • 如果 values.append 使用时 [最高温度,平均温度,最低温度]] 'Sheet1!B:D' 分别用作值和范围,将值放入列A-C。即使 'Sheet1' 使用时,结果相同。
  • 写作 [最高温度,平均温度,最低温度]] 对于B-C列,有两种方法:
    1. 当最后一行假设为10时,它使用 'Sheet1!B11' 作为射程。
      • 在这种情况下,需要知道最后一行。
    2. 使用范围时 “第1张!B:D' ,它使用 [["", max_temp, avg_temp, min_temp]] 作为价值。
      • 在这种情况下,虽然将值放在最后一行,但当值将空元素添加到数组顶部时,会出现值没有放在正确位置的情况。

在我的环境中,我以前在这种情况下感到困惑。所以我想了个办法解决了我的问题。在这个解决方案中, AppendCellsRequest 属于 spreadsheets.batchUpdate 使用。我认为你的情况可能会有一些解决办法,所以请把这看作是其中之一。

修改脚本:

请更新脚本(之后 service = build('sheets', 'v4', http=creds.authorize(Http())) )到以下行:

spreadsheet_id = "#####"  # Please set spreadsheet ID here.
sheetId = 0  # Please set sheet ID here.
values = [[max_temp, avg_temp, min_temp]]
range_list = [1, 4, 7]  # columns B, E and H. First index is 0.
rows = [{'values': ([{}] * e) + [{'userEnteredValue': {'stringValue': r}} for r in values[0]]} for e in range_list]
body = {'requests': [{'appendCells': {'rows': rows, 'sheetId': 0, 'fields': "userEnteredValue.stringValue"}}]}
result = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()

注:

  • 这个修改过的脚本假定您的环境可以使用sheets api。
  • 使用此脚本时,请将工作表ID设置为 Sheet1 并将值设置为 max_temp, avg_temp, min_temp 是的。
  • range_list = [1, 4, 7] 表示B、E和H列。在本例中,第一个索引为0。
  • 在这个修改过的脚本中,所有 range_list 作为请求主体创建并使用。这样,一个api调用就可以放入值。所以 for i in range(3) 在你的问题可以删除。
  • 这是一个示例修改。所以请根据你的情况修改一下。

参考文献:

如果我误解了你的问题,我很抱歉。