2014-02-10 197 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