MacOS – Mac Sierra – Batch Convert Pages to Plain Text

applescriptautomatormacospages

Trying to batch convert pages to plain text but I keep running into issues with file permissions. (Using Sierra 10.2.3 after upgrading from 10.2.2)

filename could not be exported. You don't have permission.

Two methods so far:

on run
    tell application "Finder"
        set mfolder to "Macintosh HD:Users:me:Documents:convertme:"
        set theFiles to name of every file of folder mfolder
    end tell
    set theFolder to "Macintosh HD:Users:me:Documents:converted:"
    tell application "Pages"
        activate
        repeat with aFile in theFiles
            open aFile
            set sourceFolder to POSIX path of aFile
            set newsourceFolder to characters 1 thru -8 of sourceFolder as string
            set theFolder to newsourceFolder & ".txt"
            export front document to POSIX file theFolder as unformatted text
            close front document
        end repeat
    end tell
end run

Also tried with Automator: on Ask for Finder Item

function run(input, parameters) {
    inFile  = Path( input );
    outFile = Path( input.toString().replace(/\.[^\.]+$/, '.pdf') );
    pages    = Application('Pages');
    document = pages.open( inFile );
    pages.export(document, {to: outFile, as: 'PDF'});
    pages.close(document, {saving: 'no'});
    return outFile;
}

Permissions on folder set to: everyone read&write

Best Answer

This script works for me, tested on MacOS Sierra and Pages Version 6.0.5

set mfolder to "Macintosh HD:Users:me:Documents:convertme:"
set destFolder to "Macintosh HD:Users:me:Documents:converted:"

tell application "Finder" to set theNames to name of files of folder mfolder

tell application "Pages"
    repeat with aName in theNames
        set theDoc to open ((mfolder & aName) as alias)
        set newFile to destFolder & (text 1 thru -7 of aName) & ".txt" -- concat destFolder and the name without the ".pages" extension 
        my makenewFile(newFile)

        export theDoc to file newFile as unformatted text
        close theDoc
    end repeat
end tell

on makenewFile(thePath)
    close access (open for access thePath)
    -- delay 0.5 -- use the delay command, If you still have a permission issue,  increase the number of seconds
end makenewFile