以下是脚本编辑器中的错误:Error on line 72: Error: sh: img2pdf: command not found
我正在编写一个JavaScript for Automation (JXA)脚本,用于在询问that question之后自动化在线数学作业收集。剧本终于完成了。
然而,我需要通过Shell使用的程序之一,img2pdf并不真正使用doShellScript()。这是出乎意料的,因为在osascript中,它非常有效。
//Clean sender
function cleanSender(sender) {
var pos = sender.search("<");
return sender.slice(0, pos - 1);
}
//Num to string, padding included
function numToString(num) {
if(num < 10) {
return '0' + num.toString();
}
else {
return num.toString();
}
}
//date to time stamp
function genTimeStamp(date) {
if (!(date instanceof Date)) {
console.log('Type Error!');
return undefined;
}
var hours = numToString(date.getHours());
var minutes = numToString(date.getMinutes());
var seconds = numToString(date.getSeconds());
var month = numToString(date.getMonth() + 1);
var day = numToString(date.getDate());
var year = numToString(date.getFullYear());
var timeStamp = month+day+year+hours+minutes+seconds;
return timeStamp;
}
function run() {
var mail = Application('Mail');
var finder = Application('Finder');
var app = Application.currentApplication();
var keyword = "Test";
var topFolderPath = "/Users/CatLover/Documents/HWBox";
var topFolder = finder.startupDisk.folders.byName("Users").folders.byName("CatLover").folders.byName("Documents").folders.byName("HWBox");
mail.includeStandardAdditions = true;
finder.includeStandardAdditions = true;
app.includeStandardAdditions = true;
var messages = mail.inbox.messages;
var messagesLength = messages.length;
for(let i = 0; i < messagesLength; i++) {
let message = messages[i];
if (message.subject().includes(keyword) && message.mailAttachments().length != 0) {
var sender = cleanSender(message.sender());//Name only
var timeStamp = genTimeStamp(message.dateSent());//Folder name
var attachments = message.mailAttachments();
var individualPath = topFolderPath + '/' + sender;
if (!finder.exists(Path(individualPath))) {
//No folder!
finder.make({new: "folder", at: Path(topFolderPath), withProperties:{name: sender}});
}
var messagePath = individualPath + '/' + timeStamp;
if (!finder.exists(Path(messagePath))) {
//No folder!
finder.make({new: "folder", at: Path(individualPath), withProperties:{name: timeStamp}});
var command = "img2pdf ";
var attachmentsLength = attachments.length;
for(let j = 0; j < attachmentsLength; j++) {
let attachment = attachments[j];
var filename = attachment.name();
var filePath = messagePath + '/' + filename;
mail.save(attachment, {in: Path(filePath)});
command = command + filePath + ' ';
}
if (attachmentsLength > 1) {
//Pics
var pdfName = sender + timeStamp;
command = command + '-o ' + messagePath + '/' + pdfName;
app.doShellScript(command);
}
}
else {
continue;//Non-spammers aren't going to send two emails at the same time down to the same second. No need to process an already processed email.
}
}
}
}我期望我的收件箱中包含“测试”和附件的所有电子邮件将按以下方式处理:
HWBox文件夹中创建具有该名称的文件夹。img2pdf程序通过Shell来处理这些图像并将它们转换成PDF格式。实际上,步骤1-3工作。另一方面,第4步不起作用。
发布于 2018-12-23 21:21:25
好的,我想我现在明白怎么回事了。基本上,doShellScript()实际上并不知道img2pdf的路径。使用完整路径后,此错误将消失。
https://stackoverflow.com/questions/53906997
复制相似问题