Suposem que tenim 2 fulls de càlcul oberts. En un d'ells (en el full que anomenarem ORIGEN) hi crearem un script associat.
Volem crear una funció senzilla que llegeixi dades del primer full (ORIGEN) i les copiï al segon full (DESTÍ).
El full ORIGEN sera així de senzill.
El full DESTÍ encara més senzill, tot en blanc.
A l'script, comencem definint els dos fulls. Del segon full ens caldrà l'ID, que es troba en la barra d'adreces.
//Millor desar el valor en una variable. Canviant-lo en un sol lloc ja no cal canviar res més de l'script
var id_full_desti ="1ukkKgkLOHQlyR_6vRFl3tgxhJlhd1Ll6j7K7vmlQmC0"
var full_origen = SpreadsheetApp.getActive() // Com que l'script està associat al full ORIGEN, indiquem que és l'actiu
var full_desti = SpreadsheetApp.openById(id_full_desti); //Pel full destí cal indicar el seu ID
Desarem tots els valors del full en una variable, que serà una matriu. Accedir als valors d'una o més cel·la és un procés que requereix força temps de procés. Així que és molt millor accedir un cop i recollir tots els valors que no anar recollint valor per valor.
//Obrim el primer full del llibre ORIGEN
var sheet = full_origen.getSheetByName("Sheet1");
var rang = sheet.getRange(1,1,5,2); //Agafem el rang on hi ha les dades
var valors = rang.getValues(); //Recollim tots els valors
Ja tenim una variable, de nom valors, amb tots les dades. COMPTE que les matriu comencen amb l'índex 0. Per tant, les dades que hi havia en la cel·la A! ara les tenim a valors[0][0]
Ara, simplement triem el mateix rang en el primer full del llibre DESTÍ i hi copiem les dades utilitzant la propietat setValues()
var sheet2 = full_desti.getSheetByName("Sheet1"); //Obrim el primer full del llibre DESTÍ
var rang2 = sheet2.getRange(1,1,5,2); //Agafem el rang on hi ha les dades
rang2.setValues(valors); //Copiem els valors al full
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('nom del menú')
.addItem('Text del menú', 'nom de la funció a executar')
.addToUi()
}