【问题标题】:Google Spreadsheet API: duplicateSheet: No sheet with IDGoogle 电子表格 API:duplicateSheet:没有 ID 的工作表
【发布时间】:2017-07-18 02:56:21
【问题描述】:

我正在尝试使用duplicateSheet 请求使用batchUpdate() 方法复制工作表:

body['requests'] = [
    {
        "duplicateSheet": {
            "newSheetName": date_today(),
            "sourceSheetId": int(sheet_number)
        }
    }
]

sheet = service.spreadsheets()
request = sheet.batchUpdate(spreadsheetId=spreadsheetId,
                            body=requestBody)
response = request.execute()

但我收到此错误消息:

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/xxxxxxxxxx_xxxxxxxx-xxxxxxx:batchUpdate?alt=json returned "Invalid requests[0].duplicateSheet: No sheet with id: 3">

但是工作表确实有这个工作表。使用此 JS 代码确认工作表的 ID:

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getIndex();

【问题讨论】:

    标签: python google-sheets google-api-python-client


    【解决方案1】:

    "sourceSheetId" 使用的工作表 ID 是 gid。工作表 ID 可以通过sheets.spreadsheets.get(用于 Python)和getSheetId()(用于 GAS)来检索。示例脚本如下。

    Python 示例

    sheet = service.spreadsheets()
    request = sheet.get(
        spreadsheetId=spreadsheetId,
        fields="sheets(properties(sheetId,title))")
    response = request.execute()
    

    气体样品

    var res = [
      [i.getSheetId(), i.getSheetName()]
      for each (i in SpreadsheetApp.getActiveSpreadsheet().getSheets())
    ];
    

    【讨论】:

      【解决方案2】:

      最终使用了这个代码(感谢我的同事):

      meta = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID).execute()
      sheets = meta.get("sheets", {})
      
      for sheet in sheets:
          sheet_index = sheet.get("properties", {}).get("index")
          sheet_id = sheet.get("properties", {}).get("sheetId")
          if (sheet_index == index):
              return sheet_id
      

      【讨论】:

        猜你喜欢
        • 2017-08-05
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多