Basecamp API - 检索小时数

时间:2015-12-03 23:11:10

标签: rest basecamp

我被要求查看创建报告,该报告将为项目列表提取时间输入数据。提供项目名称/ ID,检索在其上花费的所有时间的总和,以及过去一周的小时数。

但我无法在新API中看到任何会给我时间条目的内容,至少检索过程不在Basecamp文档中。

我一直在查看此页面,其中介绍了API:

https://github.com/basecamp/bcx-api

2 个答案:

答案 0 :(得分:0)

原来你可以从旧的API中获取它:

https://mystuff.basecamphq.com/projects/#project_id#/time_entries.xml

这将为您提供XML条目的时间条目,这很痛苦。它还对结果进行分页。在你回来的标题中有两个字段,它们告诉你总共有多少条记录,以及有多少页面:

var pageCount = headers["X-Pages"];
var recCount = headers["X-Records"];

您可以按如下方式处理返回的记录:

function processRecords(response)
{
    var respObj =
    {
        totalHours: 0,
        thisWeekHours: 0
    }

    var doc = null;

    if (response.getContentText) 
    {
       doc = Xml.parse(response.getContentText(), true);
    }
    else if (response.getElements) 
    {
       doc = response;
    }
    else 
    {
      var name = typeof response;
      if (response.constructor) name = response.constructor.name;
      throw new Exception("Incompatible type: " + name);
    }

    var root = doc.getElement();

    var records = root.getElements("time-entry");

    if (records.length > 0)
    {
        for (i = 0;i < records.length; i++)
        {
           var hours = Number(records[i].hours.getText());
           var recordDate = records[i].date.getText();
           if (recordDate >= previousSunday && recordDate <= previousSaturday)
           {
               respObj.thisWeekHours = respObj.thisWeekHours + hours; 
           }

           respObj.totalHours = respObj.totalHours + hours;
        }
     }

     return respObj;
}

答案 1 :(得分:-1)

到目前为止我们所看到的是,没有简单的方法可以在任何项目上花费实际时间。您可以执行一些简单的操作,例如从创建项目到关闭/删除项目的时间。

我们看到这样做的赌注方式是查看每个待办事项列表,然后查看其下的待办事项。找出该项目每个待办事项列表下每个待办事项的累计时间,这将是项目所花费的实际(最近可能的准确时间)。

您可以使用API​​来获取此待办事项级别的详细信息,这样可以解决问题。

如果有人有更好的选择,请告诉我们:)我们正在进行上述截至今天。