Google Sheets API:从单元格复制公式

Jes*_*ers 1 excel google-sheets google-sheets-api google-sheets-formula

由于类似的问题都没有真正的答案,所以我会尝试一下。

我在预先存在的电子表格上使用 Google Sheets API。

A1我想将:中的公式复制=A7/A2B1:=B7/B2

我可以很好地复制内容,但不能复制公式:

body = {'values': [[result.get("values")[0]]]}
new_range = 'B1'
up_result = sheet.values().update(
spreadsheetId=SPREADSHEET_ID, range=new_range, 
    valueInputOption='USER_ENTERED', body=body).execute()
Run Code Online (Sandbox Code Playgroud)

有没有办法复制公式?

Tan*_*ike 5

  • 您想要将单元格“A1”的公式复制=A7/A2到单元格“B1”作为=B7/B2
  • 您希望使用 Sheets API 和 Python 的 google-api-python-client 来实现此目的。
    • 从你的脚本中,我认为你可能将 google-api-python-client 与 Python 一起使用,尽管没有找到 Python 的标签。
  • 您已经能够使用 Sheets API 为电子表格添加和获取值。

如果我的理解是正确的,那么这个修改怎么样?在这次修改中,我使用了Sheets API的spreadsheets.batchUpdate方法的“CopyPasteRequest”。

修改后的脚本:

spreadsheet_id在使用此脚本之前,请设置和的变量sheetId

service = build('sheets', 'v4', credentials=creds)
spreadsheet_id = '###'  # Please set Spreadsheet ID.
sheetId = "###"  # Please set sheet ID.

batch_update_spreadsheet_request_body = {
    "requests": [
        {
            "copyPaste": {
                "source": {
                    "sheetId": sheetId,
                    "startRowIndex": 0,
                    "endRowIndex": 1,
                    "startColumnIndex": 0,
                    "endColumnIndex": 1
                },
                "destination": {
                    "sheetId": sheetId,
                    "startRowIndex": 0,
                    "endRowIndex": 1,
                    "startColumnIndex": 1,
                    "endColumnIndex": 2
                },
                "pasteType": "PASTE_FORMULA"
            }
        }
    ]
}
request = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=batch_update_spreadsheet_request_body)
response = request.execute()
print(response)
Run Code Online (Sandbox Code Playgroud)
  • 请将范围设置为网格范围。
    • 0, 1, 0, 1对于startRowIndexendRowIndexstartColumnIndexendColumnIndex表示单元格“A1”。
    • 0, 1, 1, 2对于startRowIndexendRowIndexstartColumnIndexendColumnIndex表示单元格“B1”。

结果:

  • 当上面的脚本在“A1”单元格具有 的情况下运行时=A7/A2=B7/B2将被放入单元格“B1”中。

笔记:

  • 在上面的脚本中,省略了授权过程。请小心这一点。因此,请使用您的脚本。

参考:

如果我误解了你的问题并且这不是你想要的结果,我深表歉意。