2015-12-03 106 views
0

我被要求查看創建報告,該報告將提取項目列表的時間條目數據。給出項目名稱/ ID,檢索花在其上的所有時間的總和,以及過去一週的小時數。Basecamp API - 檢索時間

但是我看不到在新的API中哪些東西會給我時間條目,至少檢索過程不在Basecamp文檔中。

我一直在看這個頁面,它描述了API:

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

回答

-1

我們迄今所看到的是有沒有簡單的方法來花費在任何項目的實際時間。你可以做一些簡單的事情,比如從項目創建到關閉/刪除的日子。

我們看到這樣做的下注方式是查看每個待辦事項列表,然後在待辦事項下進行。找出該項目每個待辦事項列表下每項待辦事項的累積時間,這將是該項目花費的實際(最接近的準確時間)時間。

你可以使用API​​來獲得這個待辦事項級別的詳細信息,這將做到這一點。

如果有人有更好的選擇讓我們知道以及:)我們正在做今天以上。

+0

不知道你爲什麼被打上標記。好吧。看到我上面的答案,有一種方法來獲取信息。 – CargoMeister

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; 
}