This is my code:
//Creo degli oggetti contenenti i fogli
//var ss = SpreadsheetApp.getActiveSpreadsheet();
//var eu = ss.getSheetByName("EntrateUscite");
var files = DocsList.find("Cartellino");
for (var i in files){
var fileId = files[i].getId();
}
var ss = SpreadsheetApp.openById(fileId);
var eu = 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);
return app;
}
function myClickHandlerEntrata(e) {
var app = UiApp.getActiveApplication();
var labelEntrata = app.getElementById('statusLabelEntrata');
labelEntrata.setVisible(true);
entrata()
app.close();
return app;
}
function myClickHandlerUscita(e) {
var app = UiApp.getActiveApplication();
var labelUscita = app.getElementById('statusLabelUscita');
labelUscita.setVisible(true);
uscita()
app.close();
return 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");
return oraCorrente;
}
Date.prototype.addHours= function(h){
this.setHours(this.getHours()+h);
return this;
}
function isValidDate(value) {
var dateWrapper = new Date(value);
return !isNaN(dateWrapper.getDate());
}
function int2Let(n){
return String.fromCharCode(65 + n-1); // where n is 0, 1, 2 ... IL -1 SERVE PERCHE L'INDICIZZAZIONE PARTIREBBE DA 0
}
function prova(){
var prova = "sgh"
Browser.msgBox(int2Let(1))
}
Today it stopped working without an apparent reason. It gives me this error:
ReferenceError: "DocsList" not Defined.
I worked perfectly for more than a year and this morning just stopped to give that error.
Sorry for the comments in italian :P
There are a few possible causes for these errors: A Google server or system is temporarily unavailable. Wait for a few moments and try running the script again. There is an error in your script that doesn't have a corresponding error message.
Equality (==): a == b results in true if the value a is equal to value b. Strict equality (===): a === b results in true if the value a is equal to value b and their types are also the same. Inequality (! =): a !=
According to Google developers page
try to use DriveApp instead of DocList. more info
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With