読者です 読者をやめる 読者になる 読者になる

#ToDo 関連のメモ ( #sorashima )

「物の状態が最終的にこうなっていたら良いな一覧と、その為の手順を書き込む」アプリを使う上でのメモなど。(内容が古いまま、間違ったままもあるので注意。)広告が自動で挿入される無料版ブログサービスを利用しているので、PVが増えても一銭の得にもなりませぬ

[ 記事一覧へ ]

タスクリストを #HandyFlowy から #Trello に転送する試み その2

WorkFlowy HandyFlowy Workflowレシピ Trello

このテーマの前回: タスクリストを #HandyFlowy から #Trello に転送する試み


Trelloには「期限」を入力する欄があり、期限で絞り込んだり、期限が過ぎるとその色を変えてくれるなどの機能があったので、WorkFlowyに書き込んだ期限タグを読み込んで登録できるようにした。

想定している期限タグは、「@d2016-11-22」や、「@d2016-11-22T17:35」、「@d2016-11-22T21:15:05」などの形式。

また、前回のは仕組み上仕方なしにノートの改行文字を削除していたが、それだとディスクリプションが読みづらいので、今回はJSONでWorkflowアプリにデータを受け渡すように変更した。

WFy2Trello_wf_Date_JSON

var readTasks = function (ele, nestL, parentN) {

  var tasks = [];

  $(ele).each(function(){

    var className = $(this).attr('class');
    var classNameS = className.split(' ');
    var projectId = ($(this).attr("projectid").split("-"))[4];
    var name = $(this).find("> .name").text();
console.log(name);
    var tags = $.makeArray( $(this).find("> .name > .content > .contentTag > .contentTagText").map(function(){
        return $(this).text();
    }) );
console.log("タグ:" + ( (tags.length>0) ? tags.join(" ") : "なし") );
    var note = $(this).find("> .notes").text();

    if (classNameS.indexOf("open")>=0) {
        var k = (nestL == 0) ? name : name + " / " + parentN;
        tasks = tasks.concat( readTasks($(this).find("> .children > .project"), nestL + 1, k) )
    } else {
        var due = "";
        if (tags.length > 0) {
//          var dueTags = tags.filter(function(item, index, array) {
//            return ((/d20[0-9][0-9]-[0-1][0-9]-[0-3][0-9](T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])*)*/).test(item));
//          });
          var dueTags = 
            $.grep(tags, function(obj) {
              return (obj.match(/d20[0-9][0-9]-[0-1][0-9]-[0-3][0-9](T[0-2][0-9]:[0-5][0-9](:[0-5][0-9])*)*/));
            });
          if (dueTags.length > 0) due = dueTags.pop().slice(1);
console.log("DUE:" + due);
        }
        var v = {};
        v.name = name;
        v.parentN = parentN
        v.note =  note;
        v.projectId = projectId;
        v.due  = due;
        tasks.push(v);
    }

  });
  return tasks;
}

var e= $('.project.selected > .children > .project');
var taskList = {}; 
taskList.tasks = readTasks(e, 0, '');
var taskListJ = JSON.stringify(taskList);
//alert(taskList);
console.log(taskList);

window.open('workflow://run-workflow?name=clip_to_Trello_json&input=text&text=' + encodeURIComponent(taskListJ));

/*
webkit.messageHandlers.CopyToClipboard.postMessage(taskList);
window.open('workflow://run-workflow?name=clip_to_Trello&input=clipboard');
*/

clip_to_Trello_json
f:id:sorashima:20161122224836p:plain:w311
※「due」の日付と時刻の区切り文字「T」は半角スペースにReplaceしている。


          ↓


このテーマの次回: タスクリストを #HandyFlowy から #Trello に転送する試み その3

広告を非表示にする