Code.gs中的Google Apps脚本返回对象

时间:2014-12-25 01:17:00

标签: javascript google-apps-script

是否无法从服务器端返回Google Apps脚本中的对象? 我的代码如下:

function getAllEventsOfDate(){
  var cal = CalendarApp.getCalendarById(Session.getActiveUser().getEmail());
  var events = cal.getEventsForDay(new Date());
  var results = [];
  for(var i = 0; i < events.length;i++){
    var event = {title:events[i].getTitle(), desc:events[i].getDescription(), location:events[i].getLocation(), startTime:events[i].getStartTime(), endTime: events[i].getEndTime()}; 
    results.push(event);
  }
  Logger.log(results);
  return results;
}

在我的HTML(称为Agenda.html)中,我有这个:

$(document).ready(function(){
  google.script.run.withSuccessHandler(getAgendaData).getAllEventsOfDate();
 });

function getAgendaData(data)
{
    console.log(data);
}

这应该只返回我从数组中的事件数据定义的对象。但这不起作用,我收到脚本已成功完成的错误,但返回的值不是有效的返回类型。如果我将return语句更改为return results[0];,它也不起作用(想要检查它是否是由数组引起的)。如果我将其更改为return results[0].title;它确实有效:我的日历的第一个事件的标题将显示在控制台中。 这是否意味着我无法归还物品?任何帮助将不胜感激。

我的Code.gs doGet有这个:

function doGet(){
    return HtmlService.createTemplateFromFile('Agenda').evaluate();
}

更新

我自己发现,显然日期类型不是合法的参数类型或返回类型(这也适用于数组,对象中的变量......)。我已将我用作参数或返回类型的每个Date更改为.toString(),现在它可以正常工作。使用这些日期字符串,我也可以为这些日期创建日期对象。

1 个答案:

答案 0 :(得分:0)

.gs脚本可以返回一个对象。从您的更新看起来您发现了问题。