Smartsheet API Delete Row Function Error

Wdjameh
Wdjameh
edited 12/09/19 in API & Developers

Hi, 

When I run a code to delete multiple columns in a sheet >500. It run successfully once, the second try  gave an error :

 Response: { status: 414 Request-URI Too Large content: { << text/html; charset=iso-8859-1 content type suppressed >> }

 

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

 

The code below reads a sheet and deletes data below the 13th row.

 

def delete_data():

    row_ids = [row.id for row in sheet.rows]

    row_ids = row_ids[13:]

    ss_client.Sheets.delete_rows(

        sheet_id,

        row_ids

    )

Do you have any ideas what went wrong and how do I fix it.

Comments

  • Hello—

    I'm wondering if this is an issue with the JSON decoder you're using?

    If you're using the python, try updating to the latest version or at least try a 3.7.x build.

    You might also make sure you're not using something like pycurl and just stick to the json library that's built into python OR try a library like requests.

    If the above doesn't fix the issue, please contact our Support team and we'll troubleshoot the issue with you.

  • Facing the similar issue when there are too many lines

    Response: {

    status: 429 Too Many Requests

    content: {

    {

        "errorCode": 4003,

        "message": "Rate limit exceeded.",

        "refId": "v0y2h98ghltf"

    }

    }

    Response: {

    status: 429 Too Many Requests

    content: {

    {

        "errorCode": 4003,

        "message": "Rate limit exceeded.",

        "refId": "17gmal7fscyaa"

    }

    }

    Response: {

    status: 429 Too Many Requests

    content: {

    {

        "errorCode": 4003,

        "message": "Rate limit exceeded.",

        "refId": "1qt2zmi121qjl"

    }

    }

  • dbgeneve
    dbgeneve ✭✭
    edited 09/08/19

    Hi Wdjameh,

    Deleting rows by chunks of 200 does the trick for me. Measured performance: deleting 5000 rows (max sheet size per Sept 2019) by chunks of 200 takes 17 seconds.

    Python code below.

    Hope that helps!

    ##########################################

     

    my_smartsheet_id=<YourSmartsheetIDHere>

    sheet = smart.Sheets.get_sheet(my_smartsheet_id)

    # DELETE ALL ROWS

                        print ("Deleting all rows in Smartsheet...")

                        row_list_del=[]

                        for row in sheet.rows:

                            row_list_del.append(row.id)

                            #Delete rows to sheet by chunks of 200

                            if len(row_list_del) > 199:

                                smart.Sheets.delete_rows(my_smartsheet_id,row_list_del)

                                row_list_del = []

                        # Delete remaining rows

                        if len(row_list_del)>0:

                            smart.Sheets.delete_rows(my_smartsheet_id,row_list_del)

     

    ##########################################

  • DanS
    DanS ✭✭✭✭

    using smartsheet-python-sdk==2.105.0 I also got the error: Request-URI Too Large

    thanks for the code idea @dbgeneve !


    I had 3647 rows to delete. Implementing the chunks by 200 rows deletion approach, execution time took about 67 seconds.