Search code examples
arraysgoogle-apps-scriptgoogle-sheetsrows

Google Sheet script to delete rows based on individual cell and array


I'm struggling to make a script to delete corresponding rows to another sheet. Ideally, I want to be able to run a script that deletes the matching entries from Sheet 1 Supplier and Jobs and sheet 2. The problem is that some Jobs will be matching with other suppliers. Any help would be truly appreciated!

An example sheet: https://docs.google.com/spreadsheets/d/1G5vUPF6H1WWlHICDd92SMg44QfPUObil8A2Ocu_usm4/edit?usp=sharing


Solution

  • Completed Sheet Pending Sheet

    Note You need to update your completed sheet to this format

    const ss = SpreadsheetApp.openById(sheetID);
    
    
    function deleteRowMain() {
      //data with completed Results
      let ws_1 = ss.getSheetByName("Sheet1");
      let ws_2 = ss.getSheetByName("Sheet2");
      let data_completed = ws_1.getDataRange().getValues();
      let data_pending = ws_2.getDataRange().getValues();
    
      //nameIndex and job index on completed sheet
      let nameIndex = 2;
      let jobIndex = 3;
    
      for (let i = 0; i < data_completed.length; i++) {
        let row = data_completed[i];
        deleteRow_(row[nameIndex - 1], row[jobIndex - 1])
      }
    }
    
    function deleteRow_(value_1, value_2) {
      //nameIndex and job index on pending sheet
      let nameIndex = 2;
      let jobIndex = 3;
    
      let ws = ss.getSheetByName("Sheet2");
      let data = ws.getDataRange().getValues();
      for (let i = data.length - 1; i >= 0; i--) {
        let row = data[i];
        if (row[nameIndex - 1] == value_1 && row[jobIndex - 1] == value_2) {
          //delets row if 'Value1' and 'value2' matches
          ws.deleteRow(i + 1);
        }
      }
    }