[google-apps-script] Elimina una riga in Google Spreadsheets se il valore della cella nella riga indicata è 0 o vuoto



Answers

Ho scritto questo script per fare la stessa cosa per uno dei miei fogli di lavoro Google. Volevo essere in grado di eseguire lo script dopo che tutti i dati erano nel foglio di calcolo, quindi ho lo script che aggiunge un'opzione di menu per eseguire lo script.

/**
 * Deletes rows in the active spreadsheet that contain 0 or
 * a blank valuein column "C". 
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet
 */
function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  var rowsDeleted = 0;
  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    if (row[2] == 0 || row[2] == '') {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
};

/**
 * Adds a custom menu to the active spreadsheet, containing a single menu item
 * for invoking the readRows() function specified above.
 * The onOpen() function, when defined, is automatically invoked whenever the
 * spreadsheet is opened.
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet
 */
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Remove rows where column C is 0 or blank",
    functionName : "readRows"
  }];
  sheet.addMenu("Script Center Menu", entries);
};

Prova foglio elettronico prima:

Esecuzione di script dal menu:

Dopo aver eseguito lo script:

Question

Mi piacerebbe poter eliminare un'intera riga in un foglio di lavoro Google se il valore inserito per dire la colonna "C" in quella riga è 0 o vuoto. C'è una semplice sceneggiatura che potrei scrivere per realizzare questo? Grazie!




Questo è quello che sono riuscito a fare funzionare. Potete vedere che ho fatto il ciclo all'indietro attraverso il foglio in modo che quando veniva eliminata una riga, la riga successiva non venisse saltata. Spero che questo aiuti qualcuno.

  function UpdateLog() {

  var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RetLog');
  var rowCount = returnSheet.getLastRow();

  for (i = rowCount; i > 0; i--) {
    var rrCell = 'G' + i;
    var cell = returnSheet.getRange(rrCell).getValue();
    if (cell > 0 ){
      logSheet.
      returnSheet.deleteRow(i);
    }
  }
}



Questo semplice codice ha fatto il lavoro per me!

    function myFunction() {

      var ss = SpreadsheetApp.getActiveSpreadsheet();  // get active spreadsheet

      var activeRow = ss.getActiveRange().getRowIndex();  // get active/selected row

var start=1;
var end=650;
var match='';
var match2=0;   //Edit this according to your choice.

     for (var i = start; i <= end; i++) {
      var columnC = ss.getRange("C"+i).getValue();
      if (columnC ==match  || columnC ==match2){ ss.deleteRow(i); }
     }
    }



richiesta abbastanza semplice. Prova questo :

 function try_It(){
 deleteRow(2); //// choose col = 2 for column C
 }

 function deleteRow(col){ // col is the index of the column to check for 0 or empty
 var sh = SpreadsheetApp.getActiveSheet();
 var data = sh.getDataRange().getValues();
 var targetData = new Array();
 for(n=0;n<data.length;++n){
 if(data[n][col]!='' && data[n][col]!=0){ targetData.push(data[n])};
 }
 Logger.log(targetData);
 sh.getDataRange().clear();
 sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
 }

EDIT : rileggere la domanda Non sono sicuro che la domanda richieda un 'live' sulla funzione Edit o una funzione (come questa sopra) da applicare dopo l'inserimento dei dati ... Non è molto chiaro per me. .. quindi sentiti libero di essere più preciso se necessario;)






Related