2014-02-10 67 views
0

我有应该根据其参数的两个不同的行为的函数:功能参数

  • 如果没有参数,做一个

  • 否则做B

如果我只是运行在脚本编辑器中选择它的函数并单击运行,它按预期运行。它做什么应该没有参数。如果我在时间驱动的触发器中运行它,则不会有任何反应。我认为在触发器中运行该函数会将参数设置为undefined。我错过了什么吗?

下面是函数代码:

function logToday(sede) { 
    var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays'); 
    var dateElement = new dateElement_(); 
    var hour=dateElement.hour()+":45"; 
    var monthYear=dateElement.month(); 
    var day=dateElement.dayInMonth(); 
    var dayName=dateElement.weekDayName(); 

    Logger.log("Running log Today with: "+sede); 

    if(! sede) 
    { 

    sede="";hour=""; 
    sheet.appendRow([monthYear,dayName,day,sede,hour]); 

    } 
    else 
    { 
    var LastRow=new LastRow_(sheet); 

    if(LastRow.getColValue("sede")=="") 
    { 
     LastRow.setColValue("sede",sede); 
     LastRow.setColValue("Entered Hour",hour); 
     if(dateElement.weekDay()==0 || dateElement.weekDay()==6)colorWeekend(sheet); 
     Logger.log(dateElement.weekDay()); 

    } 
    } 

} 
+0

传递参数的函数在哪里? U将需要调度该功能。 –

回答

1

触发时,函数给出从触发一些参数。例如,每分钟的时间触发将返回如下内容: {分钟= 58,星期几= 1,时区= UTC,星期几= 7,秒= 20,日期= 10 ,一个月= 2年= 2014小时= 10,authMode =全}

是做这个测试的功能:

function test(e){ 
    SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").appendRow([e]); 
} 

你可以做的是:在你的代码,而不是解析一个简单的字符串作为参数,你可以传递给你的函数一个对象:

function passSedeArg(){ 
    var obj={"sede":"argument"}; // here "argument" must be changed for the old "sede" you where passing 
    logToday(obj); 
} 

function logToday(obj) { 
    var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays'); 
    var dateElement = new dateElement_(); 
    var hour=dateElement.hour()+":45"; 
    var monthYear=dateElement.month(); 
    var day=dateElement.dayInMonth(); 
    var dayName=dateElement.weekDayName(); 

    Logger.log("Running log Today with: "+sede); 

    if(typeof obj.sede=="undefined") // no obj.sede argument where given 
    { 

    sede="";hour=""; 
    sheet.appendRow([monthYear,dayName,day,sede,hour]); 

    } 
    else // you have a obj.sede argument 
    { 
    var LastRow=new LastRow_(sheet); 

    if(LastRow.getColValue("sede")=="") 
    { 
     LastRow.setColValue("sede",obj.sede); 
     LastRow.setColValue("Entered Hour",hour); 
     if(dateElement.weekDay()==0 || dateElement.weekDay()==6)colorWeekend(sheet); 
     Logger.log(dateElement.weekDay()); 

    } 
    } 
} 
+0

非常感谢。我想到了这样的事情,我会回答我自己的问题,但你的答案要好得多。非常感谢你。 – Danielo515