Edits history of script submission #185 for ' Delete Row (gsheets)'

  • deno
    import * as wmill from "https://deno.land/x/[email protected]/mod.ts";
    
    /** Delete row(s) in the given range.
     * If the `endIndex` argument is not specified, only one row will be deleted.
     * 
     * **Indexes start from 1 and both are inclusive.**
     * 
     * *(eg: if `startIndex = 1` and `endIndex = 3` then row 1, 2 and 3 will be deleted)* */
    export async function main(
      gsheets_auth: wmill.Resource<"gsheets">,
      spreadsheetId: string,
      sheetId: string,
      startIndex: number,
      endIndex?: number
    ) {
      const token = gsheets_auth["token"];
      const DELETE_ROWS_URL =
        `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}:batchUpdate`;
    
      startIndex = startIndex - 1
      endIndex = endIndex ?? startIndex + 1
      const body = {
        requests: [
          {
            deleteDimension: {
              range: {
                dimension: "ROWS",
                sheetId,
                startIndex,
                endIndex
              }
            }
          }
        ]
      }
    
      const response = await fetch(DELETE_ROWS_URL, {
        method: "POST",
        body: JSON.stringify(body),
        headers: {
          Authorization: "Bearer " + token,
          "Content-Type": "application/json",
        },
      });
    
      const json = await response.json()
      if(json.error) {
        let { code, status, message } = json.error
        message = message.replaceAll('indexes must be >= 0', 'indexes must be > 0')
        throw Error(`\n${code} ${status} - "${message}"\n`)
      }
      if(endIndex - startIndex === 1) {
        return `Deleted row: ${endIndex}`;
      }
      return `Deleted rows: ${startIndex + 1}-${endIndex}`;
    }

    Submitted by adam-kov 1319 days ago