Saturday, 15 September 2012

Sharing google apps script -



Sharing google apps script -

i have code:

//creo degli oggetti contenenti fogli //var ss = spreadsheetapp.getactivespreadsheet(); //var european union = ss.getsheetbyname("entrateuscite"); var files = docslist.find("cartellino"); (var in files){ var fileid = files[i].getid(); } var ss = spreadsheetapp.openbyid(fileid); var european union = ss.getsheetbyname("entrateuscite"); var ultimarigapiena = eu.getlastrow(); var primarigavuota = eu.getlastrow()+1; var coltimes =1; var coltipo =2; var collav =3; var collavd =4; var colinc =5; var colincd=6; var colmese =7; var coltargetmese =8; var colgiorno=9; var coltargetgiorno=10; function doget(e) { var app = uiapp.createapplication(); ////////////////////////////////////////////////////////// var buttonentrata = app.createbutton('entrata'); app.add(buttonentrata); var labelentrata = app.createlabel('entrata!') .setid('statuslabelentrata') .setvisible(false); app.add(labelentrata); var handlerentrata = app.createserverhandler('myclickhandlerentrata'); buttonentrata.addclickhandler(handlerentrata); ///////////////////////////////////////////////////////////// var buttonuscita = app.createbutton('uscita'); app.add(buttonuscita); var labeluscita = app.createlabel('uscita!') .setid('statuslabeluscita') .setvisible(false); app.add(labeluscita); var handleruscita = app.createserverhandler('myclickhandleruscita'); buttonuscita.addclickhandler(handleruscita); homecoming app; } function myclickhandlerentrata(e) { var app = uiapp.getactiveapplication(); var labelentrata = app.getelementbyid('statuslabelentrata'); labelentrata.setvisible(true); entrata() app.close(); homecoming app; } function myclickhandleruscita(e) { var app = uiapp.getactiveapplication(); var labeluscita = app.getelementbyid('statuslabeluscita'); labeluscita.setvisible(true); uscita() app.close(); homecoming app; } function entrata(){ entratauscita("1"); } function uscita(){ entratauscita("0"); } function entratauscita(tipo) { //controllo se l'ultimo record è di tipo (un'entrata o un'uscita) diverso da quello corrente if(eu.getrange(ultimarigapiena,coltipo).getvalue()!=tipo){ //in se non lo è procedo writeonlastemptyrow(coltimes,getcurrtimestamp()); writeonlastrow(coltipo,tipo); //se il tipo è uscita allora calcolo quanto tempo è passato tra l'entrata e l'uscita con l'incrementale if(tipo==0){ //inserisco le ore lavorative come durata eu.getrange(primarigavuota,collav).setformula("="+int2let(coltimes)+primarigavuota+"-"+int2let(coltimes)+(primarigavuota-1)); //inserisco le ore lavorative come decimale eu.getrange(primarigavuota,collavd).setformula("=to_text("+int2let(collav)+primarigavuota+")*24"); //scrivo il mese eu.getrange(primarigavuota,colmese).setformula("=concatenate(lookup(month("+int2let(coltimes)+primarigavuota+ ");'nomi mesi'!a1:b12);\" \";year("+int2let(coltimes)+primarigavuota+"))"); //scrivo il target mensile eu.getrange(primarigavuota,coltargetmese).setformula("=target!e2") //scrivo il giorno eu.getrange(primarigavuota,colgiorno).setformula("=concatenate(year("+ int2let(coltimes)+primarigavuota+");\"/\";text(month(" +int2let(coltimes)+primarigavuota+");\"00\");\"/\";text(day("+ int2let(coltimes)+primarigavuota+");\"00\"))") //scrivo il terget giornaliero eu.getrange(primarigavuota,coltargetgiorno).setformula("=target!c2") //se la cella con la quale devo fare l'addizione non è una durata if(isvaliddate(eu.getrange(primarigavuota-2,colinc).getvalue())){ //la uso eu.getrange(primarigavuota,colinc).setformula("="+int2let(collav)+primarigavuota+"+"+int2let(colinc)+(primarigavuota-2)); }else{ //altrimenti no eu.getrange(primarigavuota,colinc).setformula("="+int2let(collav)+primarigavuota); } //inserisco formula ore incrementeli in decimale eu.getrange(primarigavuota,colincd).setformula("=to_text(" + int2let(colinc)+primarigavuota +")*24"); } }else{ if(tipo==1){ browser.msgbox("sei già dentro!"); }else{ browser.msgbox("sei già uscito!"); } } } //scrivo sul'ultima riga specificando la colonna ed il testo function writeonlastemptyrow(column, text) { eu.getrange(eu.getlastrow()+1,column).setvalue(text); } //scrivo sul'ultima riga specificando la colonna ed il testo function writeonlastrow(column, text) { eu.getrange(eu.getlastrow(),column).setvalue(text); } function getcurrtimestamp(){ ///si aggiunge un'ora per l'ora legale var oracorrente = utilities.formatdate(new date().addhours(1), "gmt+1", "dd-mm-yyyy hh.mm.ss"); homecoming oracorrente; } date.prototype.addhours= function(h){ this.sethours(this.gethours()+h); homecoming this; } function isvaliddate(value) { var datewrapper = new date(value); homecoming !isnan(datewrapper.getdate()); } function int2let(n){ homecoming string.fromcharcode(65 + n-1); // n 0, 1, 2 ... il -1 serve perche l'indicizzazione partirebbe da 0 } function prova(){ var prova = "sgh" browser.msgbox(int2let(1)) }

the result should web page 2 buttons.

but when share using links google gives me error:

typeerror: impossibile chiamare il metodo "getsheetbyname" di null. typeerror: impossible phone call method "getsheetbyname" of null. (english) :p

when instead click "try app lastly version of code"on sharing page link works....

why?

you have save new version of code (file menu > manage versions) , update version number in deployment window number of lastly version.

the other link mention test version allows test code independently of deployed version , (and script co-editors) can use.

google-apps-script google-spreadsheet

No comments:

Post a Comment