我试图在使用JavaScript实现自动化时,自动创建和检查主幻灯片。
创建主幻灯片
创建一个具有给定主题的新文档并添加带有特定主幻灯片的幻灯片是很容易的。
// 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);
这将创建一个新文档,但不会创建新的主幻灯片。查看Script Replies
窗口,push
返回null
,而不是将一个新的Slide
推到doc.slides
上,后者返回2(数组中的幻灯片数)。
可以复制主幻灯片,但只有在“编辑主幻灯片”模式下才能复制。如果单击了“编辑主幻灯片”按钮,则可以复制主幻灯片。
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 */
问题
创建主幻灯片、检查其属性并最终更改它们的适当方法是什么?
发布于 2017-06-09 11:48:24
先用AppleScript编写代码,看看是否能在那里工作。AppleScript是一种糟糕的语言,但它对苹果事件的支持是首屈一指的,它是所有可编写脚本的应用程序开发和测试所依据的事实上的标准。
如果它失败了,那么基调就坏了。如果它在AS中工作,但是当您将它转换到JXA时却失败了,那么JXA就坏了。CocoaScripting框架(用于在macOS应用程序中实现Apple支持)和JXA都有许多缺陷和缺陷,当然,单个可编写脚本的应用程序也可能包含自己的错误和糟糕的†设计,因此您必须弄清楚是应用程序还是JXA在淘汰过程中失败了。
..。
从你对观察到的行为的描述,以及知道苹果自己的脚本应用程序往往是错误的和设计不当,我倾向于应用程序,但我没有接触过iWork应用很多年,所以不能肯定。
如果您发现它是应用程序,并决定提交一个bug报告(有时有效,而其他时候不起作用),请确保包含说明问题的AppleScript代码;事实上的标准是这样的,而JXA不是,所以它将减少一层混淆和潜在的bug,让疑难解答者费力地通过。
(苹果开发人员提供的关于苹果事件自动化的实际工作方式和如何很好地实现这一功能的文档也很糟糕,这一点并没有帮助†。)
https://stackoverflow.com/questions/44422191
复制相似问题