Q:APIで特定チケットのフィールド値を取得することはできますか
あるマイルストーン設定された複数のチケット情報をエクスポート
→ローカルの Excel で各種集計
→他サービスへ転記というプロセス現在おこなっており、API 経由で情報が取得しある程度自動化したい
A: CSV をダウンロードしてこれをスクリプトなどで処理するのが簡単です
最初のエクスポートを手動で行ってもよいのであれば、カスタムクエリから必要になる条件を指定した上で CSV をダウンロードしてこれをスクリプトなどで処理するのが簡単です。
ログイン済みであれば、カスタムクエリのページをアクセスせずに CSV ダウンロードのURL から直接保存することができます。
その工程も API で処理を行いたいということであれば、API にある ticket.query,ticket.get, system.multicall を用いてチケットの内容を取得することができます。
API については以下のページに簡単な説明と API の一覧があります。
https://[ご自分のサイトアドレス]/p/[プロジェクト名称]/rpc
サンプルコード
// 以下の `<sitename>`, `<projname>`, ユーザ名、パスワードはご利用のものに置き換えてください
var ENDPOINT = 'https://<sitename>.tracpath.com/p/<projname>/login/rpc';
var USERNAME = 'username';
var PASSWORD = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
function jsonrpc(method, params) {
if (params === undefined)
params = [];
var data = JSON.stringify({method: method, params: params, id: 42});
var xhr = new ActiveXObject('Msxml2.ServerXMLHTTP');
xhr.open('POST', ENDPOINT, false, USERNAME, PASSWORD);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(data);
return JSON.parse(xhr.responseText);
}
function ticket_query_and_get() {
var params = ['milestone=マイルストーン42'];
var rv = jsonrpc('ticket.query', params);
params = rv.result.map(function(id) {
return {method: 'ticket.get', params: [id]};
});
rv = jsonrpc('system.multicall', params);
return rv.result;
}



