从 keynote 中提取 PresentationNotes

Extract PresentationNotes from keynote

我很难使用 JXA 从主题演讲中提取 presentationNotes(Javascript for osx)我不想使用 applescript。除了提取注释之外,此脚本还有更多功能。

看起来很简单。但是,当我在 RichText 对象中获取 presentationNotes 时,它似乎无论如何都无法获取普通文本。 所以我想我会打开 textEditor 并将它们写出来。 好吧,我不知道该怎么做。

var app = Application('Keynote')
document = app.documents[0] 
slide_name = document.name()
i = 1 // loop through folder contents
folder_name = 'chapter'+i
//create a folder
var textEdit = Application('textEdit')
textEdit.activate()
var doc = textEdit.make({new:'document'})
doc.text = "fsdfsdfs"
var c = 0;
for(slide in document.slides){

    var s = document.slides[slide]
    var note = s.presentationNotes // returns object specifier

    //textEdit.documents[0].push(note)
    // I've tried lots of things here.


}

如有任何想法或帮助,我们将不胜感激。我看过一些 applescript 示例,但无法翻译它们。显然 applescript 作为文本与 toString() 无关

你快到了。不应该推送文本,而是推送文本的一个段落对象。

这是一个完整的例子(只有文字)。 它使用当前打开的 Keynote 和 TextEdit 文档。

var Keynote = Application("Keynote");
var presentation = Keynote.documents[0];

var TextEdit = Application("TextEdit");
var document = TextEdit.documents[0];

document.paragraphs.push( TextEdit.Paragraph({color:"red", size:18}, "presentation: "+ presentation.name()+"\n" ))

for (var i=0; i<presentation.slides.length; i++) {
    slide = presentation.slides[i];
    slideTitle = slide.defaultTitleItem().objectText();
    notes = slide.presenterNotes(); // text only

    document.paragraphs.push( TextEdit.Paragraph({color:"blue", size:14}, "\n"+ (i+1) +": "+ slideTitle + "\n") )   
    document.paragraphs.push( TextEdit.Paragraph({}, notes +"\n") ) 
}