Google Apps脚本 - 错误:“DocsList”未定义 - 代码突然停止工作

时间:2015-04-21 13:26:15

标签: google-apps-script

这是我的代码:



//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))
}




今天它没有明显的理由就停止了工作。 它给了我这个错误:

  

ReferenceError:" DocsList"没有定义。

我工作了一年多,而且今天早上刚停止发出错误。

对不起意大利语中的评论:P

1 个答案:

答案 0 :(得分:10)

根据谷歌开发者的说法 page

enter image description here

尝试使用 DriveApp 而不是 DocList more info