Параметры функции в управляемом по времени триггере
У меня есть функция, которая должна иметь два разных поведения в зависимости от ее параметров:
Если нет параметра, сделайте A
В противном случае сделать B
Если я просто запустил функцию, выбрав ее в редакторе сценариев и щелкнув "Запустить", она запустится, как и ожидалось. Он делает то, что должен делать без параметров. Если я запускаю его по времени, то ничего не происходит. Я предполагал, что при запуске функции в триггере параметры также будут определены как неопределенные. Я что-то пропустил?
Вот код функции:
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());
}
}
}
1 ответ
При запуске функция получает некоторые параметры из триггера. Например, триггер времени каждую минуту будет возвращать что-то вроде этого: {минута =58, день недели =1, часовой пояс =UTC, неделя года =7, секунда =20, день месяца =10, month=2, year=2014, hour=10, authMode=full}
функция, которая делает этот тест:
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());
}
}
}