(初学者)我正在尝试使用 python 将值从一个电子表格复制到另一个电子表格。我正在使用 gspread 但我似乎无法弄清楚如何将值从我的第一个电子表格复制到另一个。如何从第一个电子表格中复制值并使用 python 将其粘贴到另一个电子表格上?

这是更新的代码:import gspread

from oauth2client.service_account import ServiceAccountCredentials


scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('sheetproject-956vg2854670.json',scope)
client = gspread.authorize(creds)






spreadsheetId= "1CkeZ8Xw4Xmho-mrFP9teHWVT-unkApzMSUFql5KkrGI"
sourceSheetName = "python test"
destinationSheetName = "python csv"

client = gspread.authorize(creds)
spreadsheet = client.open_by_key(spreadsheetId)
sourceSheetId = spreadsheet.worksheet("python test")._properties['0']. #gid value in the url
destinationSheetId = spreadsheet.worksheet("python csv")._properties['575313690'] #gid value in the url
body = {
    "requests":  [
        {
            "copypaste": {
                "source": {
                    "sheetId": 0,

                    "startRowIndex": 0,
                    "endRowIndex": 20,
                    "startColumnIndex": 0,
                    "endcolumnIndex": 1
                },
                "destination": {
                    "sheetId": 575313690,
                    "startRowIndex": 0,
                    "endRowIndex": 20,
                    "startColumnIndex": 0,
                    "endcolumnIndex": 1
                },
                "pasteType": "Paste_Normal"
            }
        }
    ]
}
res = spreadsheet.batch_update(body)
print(res)

最佳答案

  • 您想将值从工作表复制到 Google 电子表格中的其他工作表。
  • 您想使用 gspread 和 python 来实现这一点。
  • 您已经能够使用 Google Sheets API 获取和放置 Google 电子表格的值。

  • 如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。

    在这个答案中,我想建议使用 batch_update 将值从工作表复制到电子表格中的其他工作表。在这种情况下,您的目标可以通过一个 API 调用来实现。

    示例脚本:

    在此示例脚本中,删除了授权脚本。显示了用于将值从工作表复制到电子表格中的其他工作表的示例脚本。所以当你使用这个脚本时,请添加授权脚本,并运行脚本。
    spreadsheetId = "###"  # Please set the Spreadsheet ID.
    sourceSheetName = "Sheet1"  # Please set the sheet name of source sheet.
    destinationSheetName = "Sheet2"  # Please set the sheet name of destination sheet.
    
    client = gspread.authorize(credentials)
    spreadsheet = client.open_by_key(spreadsheetId)
    sourceSheetId = spreadsheet.worksheet(sourceSheetName)._properties['sheetId']
    destinationSheetId = spreadsheet.worksheet(destinationSheetName)._properties['sheetId']
    body = {
        "requests": [
            {
                "copyPaste": {
                    "source": {
                        "sheetId": sourceSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 5,
                        "startColumnIndex": 0,
                        "endColumnIndex": 5
                    },
                    "destination": {
                        "sheetId": destinationSheetId,
                        "startRowIndex": 0,
                        "endRowIndex": 5,
                        "startColumnIndex": 0,
                        "endColumnIndex": 5
                    },
                    "pasteType": "PASTE_VALUES"
                }
            }
        ]
    }
    res = spreadsheet.batch_update(body)
    print(res)
    

    笔记:
  • 在此示例脚本中,“Sheet1”表中 A1:E5 单元格的值被复制到“Sheet2”表中 A1:E5 单元格中。
  • 在这种情况下,范围由 the GridRange 给出。
  • 这是一个简单的示例脚本。所以请根据您的实际情况修改它。

  • 引用:
  • batch_update
  • Method: spreadsheets.batchUpdate
  • CopyPasteRequest
  • GridRange

  • 如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    关于python - 您如何使用 gspread 或其他方式将值从一个电子表格复制到另一个电子表格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60764039/

    10-12 20:16