このテーマの前回: タスクリストを #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
※「due」の日付と時刻の区切り文字「T」は半角スペースにReplaceしている。