1 votos

La automatización de los números, de Exportar el archivo como un documento de excel

Recientemente he adquirido un Macbook Pro (OS X Yosemite 10.10.4). Me parece que los Números de la aplicación satisfactoria para el trabajo, pero no puedo guardar el archivo como un .xlsx después de que estoy hecho. Necesito hacer cambios en el archivo varias veces y guardarlo en repetidas ocasiones como el archivo que se utiliza como entrada un programa que sólo puede leer archivos de excel.

Como consecuencia, cada vez que hago un cambio en el archivo que tengo que ir a la barra de Menús, elija exportar como Excel, elija reemplazar el pre-existentes archivo de excel. He pasado por algunos tutoriales de applescript utilizado por los "Números", pero no puedo averiguar cómo automatizar el proceso de exportación de un archivo de Excel.

on run {input, parameters}

    tell application "Numbers"
        activate
        tell document 1
            export as xlsx
        end tell
    end tell
    return input
end run

Este es el código tal y como está. Por favor, hágamelo saber cómo automatizar el proceso de exportación de un número de archivo como un archivo de excel.

2voto

sweetfa Puntos 162

He escrito un script para exportar a CSV originalmente. He incluido un comentario de la línea en la que la secuencia de comandos se puede cambiar, para exportar a Excel en su lugar:

Ver la esencia aquí: https://gist.github.com/idStar/61994506d69595da3d30

Además, toda la secuencia de comandos se reproduce a continuación:

#! /usr/bin/osascript

(*
---------------------------------------------------------------------------------

 Script: SpreadsheetExportToCSV

 Command-line tool to convert a spreadsheet document to CSV
 This AppleScript is tested with and compatible with Apple iWork Numbers 3.6,
 current as at October 23, 2015.

 Parameters:
 1. Full Path to the input file, including file extension
 2. Full Path to the output file, including file extension

 Example command-line invocation:

    osascript SpreadsheetExportToCSV.scpt "/Users/me/Documents/MySpreadsheet.xlsx" "/Users/me/Documents/Converted/OutputFile.csv"

 The spreadsheet to use as an input file can be an Excel file or a Numbers file.

 Sohail Ahmed
 Blog: http://sohail.io
 Twitter: @idStar

 Creation Date: October 23, 2015

---------------------------------------------------------------------------------
*)

global _inputFilePathAlias
global _outputFilePath
global _requestedOptions


(*
 run

 This is our entry point, our main function, where this script 
 begins execution. We call out to helper functions, to modularize
 the design.
*)
on run argv
    -- Ensure our CSV files are encoding with UTF8:
    ensureUTF8Encoding()

    -- Parse and determine input/output paths:
    retrieveCommandLineArguments(argv)

    -- Perform the actual activation, file open, export and cleanup:
    processSpreadsheet()

end run




---------------------- SUPPORTING FUNCTIONS --------------------------

(*
 retrieveCommandLineArguments

 Handles parsing the command line arguments passed to us.
 We return a list, where the first element is the input file
 path as an alias. The second element is the output path,
 as text (as it may not yet exist).
*)
on retrieveCommandLineArguments(command_line_arguments)
    set _inputFilePathAlias to POSIX file (item 1 of command_line_arguments) as alias
    set _outputFilePath to (POSIX file (item 2 of command_line_arguments)) as text

    log "input file path is: " & _inputFilePathAlias
    log "output file path is: " & _outputFilePath

end retrieveCommandLineArguments


(*
 processSpreadsheet

 This function is the workhorse of this script. We open Numbers,
 have it load the source spreadsheet, and invoke the export command
 to ultimately write the output CSV to the specified path.
*)
on processSpreadsheet()
    tell application "Numbers"
        activate

        -- Before we open the file asked of us, close out every document 
        -- that might have opened along with the application having activated:
        close every window saving no

        -- Retrieve information about the source file:
        set fileInfo to (info for (_inputFilePathAlias))
        set fileName to name of (fileInfo)
        set fileExtension to name extension of (fileInfo)
        log "Opening source document " & fileName & "..."

        tell (open _inputFilePathAlias)
            -- In this scope, we are now implicitly dealing with the document just opened
            -- as the current target, which means we access it through the "it" keyword,
            -- as per: https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_fundamentals.html#//apple_ref/doc/uid/TP40000983-CH218-SW4

            set activeDocument to it

            -- Note: We could have also gotten to the active document by walking the chain from the top,
            -- i.e. right from the Application object:
            --set activeDocument to document 1 of application "Numbers" 

            say "Starting Export."
            with timeout of 600 seconds
                export activeDocument as CSV to file _outputFilePath
                -- Use this instead if you want to export to Excel:
                -- export activeDocument as Microsoft Excel to file _outputFilePath 
            end timeout
            say "Completed Export."

            -- Since we closed out other windows that might have been open before
            -- opening the file we sought, we really should only have one document
            -- window open.
            close activeDocument
        end tell

        quit

    end tell
end processSpreadsheet


(*
 ensureUTF8Encoding

 Microsoft Excel on the Mac is not good with exporting special
 characters as is Apple Numbers. Part of this is in the ability for
 Numbers to correctly process UTF8 formatting when exporting.

 Setup default export encoding for CSV files to UTF8, so without 
 specifying anything further for AppleScript, the right format will 
 be applied automatically. Since we cannot specify the CSV export
 encoding via AppleScript, we will set it via the Defaults Database
 with a shell command.

 Here are the codes that apply: 4=UTF8, 12=windows latin, 30=MacRoman
 As such, we'll specify 4 for UTF8.

 This technique courtesy of: https://discussions.apple.com/thread/4018778?tstart=0 
*)
on ensureUTF8Encoding()
    do shell script "/usr/bin/defaults write com.apple.iWork.Numbers CSVExportEncoding -int 4"
end ensureUTF8Encoding

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X