1

Delete Row

by
Published Jul 27, 2022
Script gsheets
  • Submitted by adam-kov Deno
    Created 1319 days ago
    1
    import * as wmill from "https://deno.land/x/[email protected]/mod.ts";
    2
    
    
    3
    /** Delete row(s) in the given range.
    4
     * If the `endIndex` argument is not specified, only one row will be deleted.
    5
     * 
    6
     * **Indexes start from 1 and both are inclusive.**
    7
     * 
    8
     * *(eg: if `startIndex = 1` and `endIndex = 3` then row 1, 2 and 3 will be deleted)* */
    9
    export async function main(
    10
      gsheets_auth: wmill.Resource<"gsheets">,
    11
      spreadsheetId: string,
    12
      sheetId: string,
    13
      startIndex: number,
    14
      endIndex?: number
    15
    ) {
    16
      const token = gsheets_auth["token"];
    17
      const DELETE_ROWS_URL =
    18
        `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}:batchUpdate`;
    19
    
    
    20
      startIndex = startIndex - 1
    21
      endIndex = endIndex ?? startIndex + 1
    22
      const body = {
    23
        requests: [
    24
          {
    25
            deleteDimension: {
    26
              range: {
    27
                dimension: "ROWS",
    28
                sheetId,
    29
                startIndex,
    30
                endIndex
    31
              }
    32
            }
    33
          }
    34
        ]
    35
      }
    36
    
    
    37
      const response = await fetch(DELETE_ROWS_URL, {
    38
        method: "POST",
    39
        body: JSON.stringify(body),
    40
        headers: {
    41
          Authorization: "Bearer " + token,
    42
          "Content-Type": "application/json",
    43
        },
    44
      });
    45
    
    
    46
      const json = await response.json()
    47
      if(json.error) {
    48
        let { code, status, message } = json.error
    49
        message = message.replaceAll('indexes must be >= 0', 'indexes must be > 0')
    50
        throw Error(`\n${code} ${status} - "${message}"\n`)
    51
      }
    52
      if(endIndex - startIndex === 1) {
    53
        return `Deleted row: ${endIndex}`;
    54
      }
    55
      return `Deleted rows: ${startIndex + 1}-${endIndex}`;
    56
    }