2017-06-07 17 views
0

我试图自动化使用JavaScript自动化Keynote中创建和幻灯片母版的检查。如何使用JavaScript创建或编辑Keynote主幻灯片以实现自动化?

创建幻灯片母版

可以很容易地创建一个新文档与给定的主题,特别幻灯片母版,将其添加幻灯片。

// Create a new document using the "White" theme. 
var Keynote = Application('Keynote'); 
var doc = Keynote.Document({ 
    documentTheme: Keynote.themes['White'] 
}); 
Keynote.documents.push(doc); 

// Create and append a new "Title & Bullets" slide. 
var slide = Keynote.Slide({ 
    baseSlide: doc.masterSlides['Title & Bullets'] 
}); 
doc.slides.push(slide); 

这将创建与“白”为主题的新文档,插入新的“标题&子弹”幻灯片。

类似的方法不适用于幻灯片母版工作。

// Create a new document using the "White" theme. 
var Keynote = Application('Keynote'); 
var doc = Keynote.Document({ 
    documentTheme: Keynote.themes['White'] 
}); 
Keynote.documents.push(doc); 

// Create and append a new master slide. 
var slide = Keynote.MasterSlide({ 
    name: "Testing" 
}); 
doc.masterSlides.push(slide); 

这将创建一个新文档,但不会创建新的主幻灯片。综观脚本编辑器Replies窗口,所述push相反返回null到推一个新Slidedoc.slides返回2(在阵列中的幻灯片的数量)。

复制主幻灯片,但只有当Keynote处于“编辑主幻灯片”模式时才有可能。如果点击了“Edit Master Slide”按钮,则可以复制主幻灯片。

var Keynote = Application('Keynote'); 
var doc = Keynote.documents[0]; 
var ms = doc.masterSlides['Title & Bullets']; 
ms.duplicate(); 

这将创建一个名为“标题&子弹复制”一个新的幻灯片母版。

检查幻灯片母版性能

检查幻灯片母版也有类似,但略有不同的问题。以下代码应在打开文档的“标题&项目符号”主幻灯片上记录标题项目的位置,宽度和高度。

var Keynote = Application('Keynote'); 
var doc = Keynote.documents[0]; 
var ms = doc.masterSlides['Title & Bullets']; 

var title = ms.defaultTitleItem(); 
var pos = title.position(); 

console.log("(x,y) = (" + pos.x + "," + pos.y + ")"); 
console.log("width x height = " + title.width() + " x " + title.height()); 

当运行时任一的“编辑母版幻灯片”模式之外,或“编辑母版幻灯片”模式,但与所选择的不同的主滑动,此代码写入

/* (x,y) = (0,0) */ 
/* width x height = 0 x 0 */ 

到日志中。相反,当在“编辑母版幻灯片”模式下选择“标题&项目符号”主幻灯片时,将记录正确的值。

/* (x,y) = (75,35) */ 
/* width x height = 874 x 170 */ 

问题

什么是适当的方法来创建幻灯片母版,检查其属性,并最终改变了他们?

回答

2

首先在AppleScript中编写代码,看看是否可以在那里使用它。 AppleScript是一种糟糕的语言,但它的Apple事件支持是首屈一指的,它是所有可脚本化应用程序开发和测试的事实标准。

如果它不能在AS然后基调是坏了。如果它在AS中起作用,但在将它翻译成JXA时失败,则JXA已损坏。CocoaScripting框架(用于在macOS应用程序中实现Apple事件支持)和JXA都有很多缺陷和缺陷,当然个别可编写脚本的应用程序可能包含自己的错误和糟糕的设计†,所以您必须弄清楚如果是通过淘汰过程失败的应用程序或JXA。

...

从您观察到的行为的描述,知道苹果自己的脚本化的应用程序往往马车和设计不当的,我倾向于应用程序,但我已经很多年没有触及的iWork应用程序所以不能肯定地说。

如果您发现它是应用程序并决定提交错误报告(有时可用而其他时间不适用),请确保包含说明问题的AppleScript代码; AS是事实上的标准,而JXA则不是,所以它会成为一个混淆层次,也是故障排除者可能遇到的潜在错误。


(†没有帮助的事实,苹果的苹果事件自动化实际上是如何工作的,以及如何实现它做好也是可怕的开发者文档。)

+0

这是一个很好的建议。我会试试看。 –