Why is my python code "deleteDimension" not removing a specific row in my Google spreadsheet?

Viewed 22

I spent hours trying to remove a specific row in my Google spreadsheet in python with:

from googleapiclient.discovery import build
from google.oauth2 import service_account

I am trying to remove this row number 3291 enter image description here

Here is my code:

def RemoveRowFromSpreadsheet(sheet,spreadsheet_id, id_row):
    spreadsheet_data = [
        {
            "deleteDimension": {
                "range": {
                    "sheetId": 1483248242,
                    "dimension": "ROWS",
                    "startIndex": id_row,
                    "endIndex": id_row
                }
            }

        }
    ]

    update_spreadsheet_data = {"requests": spreadsheet_data}
    updating = sheet.batchUpdate(
        spreadsheetId=spreadsheet_id, body=update_spreadsheet_data)
    result=updating.execute()
    print(f"result:{result}")


googleSheetURL="https://docs.google.com/spreadsheets/d/1viLqgmmeolHohWRQAfKb9Xdh9OyZxf0Y4O25bsjA9kA/edit?usp=sharing"
id_spreadsheet=urlToID(googleSheetURL)
sheet=GetSPreadsheet()

RemoveRowFromSpreadsheet(sheet, id_spreadsheet, 3290)

As you can see I specify index 3290 in order to remove row N° 3291.

And this is the output:

result:{'spreadsheetId': '1viLqgmmeolHohWRQAfKb9Xdh9OyZxf0Y4O25bsjA9kA', 'replies': [{}]}


Process finished with exit code 0

I don't see any issue or any error message. But when I return to the spreadsheet to check if the row was removed, nothing. I checked the row above and the row below this row N° 3291. And nothing changed. I thought my script removed the wrong row but this is not the case.

1 Answers

Issue:

endIndex is exclusive, so if it's the same as startIndex, no row is deleted.

Solution:

In order to delete 1 row, set endIndex to startIndex + 1.

"deleteDimension": {
  "range": {
    "sheetId": 1483248242,
    "dimension": "ROWS",
    "startIndex": id_row,
    "endIndex": id_row + 1
  }
}

Reference:

Related