由于所有类似问题都没有真正的答案,因此我将尝试一下。
我正在现有的电子表格上使用Google Sheets API。
我想将A1
:=A7/A2
中的公式复制到B1
:=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()
有没有办法复制公式?
答案 0 :(得分:2)
=A7/A2
复制为单元格“ B1”作为=B7/B2
。如果我的理解是正确的,那么该修改如何?在此修改中,我使用了Sheets API的电子表格.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)
0, 1, 0, 1
,startRowIndex
,endRowIndex
和startColumnIndex
的endColumnIndex
表示单元格“ A1”。0, 1, 1, 2
,startRowIndex
,endRowIndex
和startColumnIndex
的endColumnIndex
表示单元格“ B1”。=A7/A2
的情况下运行上述脚本时,会将=B7/B2
放入单元格“ B1”。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
答案 1 :(得分:0)
它比仅使用数组公式还要复杂吗?
= arrayformula(A7:7 / A2:2)
如果只希望它转到B(或其他设置的列),则可以使用以下方法:
= arrayformula(A7:B7 / A2:B2)
如果只希望它移至第2行中的数据,则可以使用以下方法:
= arrayformula(if(isblank(A2:2),, A7:7 / A2:2))