Come posso applicare uno script a un solo foglio specifico all'interno di un foglio di calcolo?


9

Ho un foglio di calcolo con due fogli chiamati Robine Lucy. Ho creato / trovato / modificato uno script per ordinare i dati sul foglio ogni volta che aggiungo alcuni dati alla colonna A:

function onEdit(event){

  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "a2:I30";
    if(editedCell.getColumn() == columnToSortBy){   
   var range = sheet.getRange(tableRange);
   range.sort( { column : columnToSortBy } );
  }
}

Questo script funziona bene, ma io lo voglio solo si essere applicato sul primo foglio, Robin. I dati nel secondo foglio Lucynon sono gli stessi, quindi creerò un altro script per un intervallo diverso per quello, una volta che avrò la testa su questo problema.

Penso di aver bisogno di usare il getSheetByName("Robin")ma non riesco a farlo funzionare.

Risposte:


12

Ci sono un paio di modi per farlo. Innanzitutto, devi dichiarare il foglio di calcolo:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

In secondo luogo, dichiarare il primo foglio in questo modo:

var sh0 = ss.getSheets()[0];

o in questo modo:

var sh0 = ss.getSheetByName("Robin");

Quindi impostare la cella attiva e recuperare l'indice di colonna:

var editedCell = sh0.getActiveRange().getColumnIndex();

E fai la logica per l'ordinamento:

var columnToSortBy = 1;
var tableRange = "a2:I30";

if(editedCell == columnToSortBy){   
  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy } );
}

Codice completo, un po 'abbreviato:

function onEdit(){
  var sh0 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var editedCell = sh0.getActiveRange().getColumnIndex();

  if(editedCell == 1) { 
    var range = sh0.getRange("A2:I30");
    range.sort({column: 1});
  }
}

@oohrogerplamer Puoi accettare la risposta contrassegnandola, vedi questa area domande frequenti . Prego.
Jacob Jan Tuinstra,

Come posso fare questo per ordinare per colonna, ma anche per ordinare anche le altre colonne in modo che tutti i dati corrispondano ancora nelle righe?
moobot,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.