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网页