javascript 使用节点中的jxa测试抓取到期任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用节点中的jxa测试抓取到期任务相关的知识,希望对你有一定的参考价值。
const runJxa = require("run-jxa");
const _ = require('lodash');
(async () => {
const result = await runJxa(() => {
var of = Application("OmniFocus");
var doc = of.defaultDocument;
return getTasks();
function getTasks() {
var today = new Date();
var dueDate = new Date(today.setDate(today.getDate() + 7));
var taskList = [];
var flattenedTasks = doc.flattenedTasks.whose({
_or: [
{
completed: false,
flagged: true,
blocked: false,
_match: [ObjectSpecifier().parentTask.flagged, false]
},
{
completed: false,
blocked: false,
_match: [ObjectSpecifier().parentTask.dueDate, { "<": dueDate }]
}
]
});
flattenedTasks().forEach(function(task) {
if (
(!task.context.hidden && !task.deferDate()) ||
today > task.deferDate()
) {
var context = task.context() !== null ? task.context().name() : "";
var project =
task.container() !== null ? task.container().name() : "";
var taskDue = false;
if (task.dueDate() || task.parentTask.dueDate()) {
taskDue = true;
}
taskList.push({
name: task.name(),
id: task.id(),
context: context,
project: project,
note: task.note(),
due: taskDue
});
}
});
var retObj = {
tasks:taskList,
count: taskList.length
};
return taskList.map((task)=>'- '+ task.project +": " + task.name);
}
});
return result;
})().then((R)=>{
R&&console.log(R)
}).catch(e=>{
console.error(e);
});
以上是关于javascript 使用节点中的jxa测试抓取到期任务的主要内容,如果未能解决你的问题,请参考以下文章
javascript JXA Dialogs
使用 Jquery 抓取 BODY 中的任何文本节点
如何在 NodeWebkit 的 html 代码中访问节点模块中的抓取数据
JAVA系列Google爬虫如何抓取JavaScript的?
使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO
实例:使用puppeteer headless方式抓取JS网页