เรามีแผนกที่ใช้สำเนาของไฟล์ Apple Numbers เพื่อป้อนข้อมูลรายวันและบันทึกข้อมูลเหล่านั้นทุกวัน ไฟล์ตัวเลขได้รับการออกแบบโดยมีหลายตาราง ฯลฯ - แต่มีเลย์เอาต์เหมือนกัน

พวกเขาทำสิ่งนี้มาประมาณ 2 ปีแล้ว (10 ไฟล์ต่อวัน) ดังนั้นจึงมีไฟล์ตัวเลขมากกว่า 7000 ไฟล์

ฉันต้องแยกข้อมูลนี้ออกเป็นสเปรดชีตเอกพจน์ภายใต้คอลัมน์

ความคิดของฉันคือการแปลงเป็นไฟล์ CSV/XLS แล้วรับข้อมูลจากแต่ละไฟล์เหล่านี้เป็นไฟล์เอกพจน์โดยใช้สิ่งที่ต้องการ

='[file.xlsx]sheet'!$A$1

อย่างไรก็ตาม ฉันได้ค้นหาทุกที่ที่ฉันสามารถแปลงไฟล์เหล่านี้เป็นชุดเป็น CSV ได้

ฉันได้รวมเวิร์กโฟลว์ Automator "ดูฉันทำ" ที่เป็นพื้นฐานมากไว้ด้วยกัน

ขั้นตอนที่ 1 - ใช้ "ขอรายการ Finder"

ขั้นตอนที่ 2 - ใช้ "เปิดรายการ Finder"

ขั้นตอนที่ 3 - ใช้เวิร์กโฟลว์ "ดูฉันทำ" - คลิกที่ "ไฟล์" > CSV > ถัดไป > ส่งออก

ใช้งานได้ดีสำหรับไฟล์เดียว แต่ฉันต้องการให้วงกลมกลับไปที่ไฟล์ที่สองและทำซ้ำตามขั้นตอน มีแนวคิดใดบ้างที่ฉันจะทำสิ่งนี้กับหลายไฟล์ได้

ขอบคุณมาก.

answer

สร้างโฟลเดอร์บนเดสก์ท็อปของคุณและตั้งชื่อเป็น "CSV_Documents" นี่จะเป็นตำแหน่งที่ไฟล์ .csv ที่คุณส่งออกทั้งหมดจะถูกบันทึกไว้

วางโค้ดAppleScript ต่อไปนี้ลงใน เอกสารScript Editor.app ใหม่ การเรียกใช้รหัสนี้จะส่งออกเอกสาร Numbers.app ที่เปิดอยู่ทั้งหมดไปยังไฟล์ .csv จากนั้นปิดเอกสาร Numbers แต่ละฉบับ (โดยไม่บันทึก) หลังจากที่ส่งออกแล้ว หากมีข้อผิดพลาดใดๆ ในการพยายามส่งออกเอกสารที่เปิดอยู่ ไฟล์นี้จะไม่ถูกส่งออกไปและจะยังคงเปิดอยู่ใน Numbers.app และจะดำเนินการกับไฟล์ถัดไป

หมายเหตุ: นี่เป็นเวอร์ชันที่ไม่มีกระดูก แต่ทำงานได้สำเร็จ

set saveToFolder to (path to desktop as text) & "CSV_Documents:"

set theFiles to choose file with prompt "Select your numbers documents to open" of type ¬
    "numbers" with multiple selections allowed

tell application "Numbers"
    open theFiles
    set documentNames to name of documents
    
    repeat with thisDocument in documentNames
        try
            export document thisDocument ¬
                to file (saveToFolder & thisDocument & ".csv") as CSV
            close document thisDocument saving no
        end try
    end repeat
    
end tell

หมายเหตุ: เวอร์ชันนี้มี "Bells & Whistles" มากกว่า

property saveToFolder : (path to desktop as text) & "CSV_Documents:"

try
    alias saveToFolder
on error
    do shell script "mkdir ~/Desktop/CSV_Documents"
end try

activate
set theFiles to choose file with prompt ¬
    "Select \".numbers\" files to open" of type ¬
    "numbers" with multiple selections allowed

if (count of theFiles) > 50 then
    activate
    display alert "TOO MANY FILES" message ¬
        "To avoid timing out errors, select only up to 50 files." as critical ¬
        buttons {"OK"} default button 1
    return
end if

set documentNames to {}

repeat with i in theFiles
    tell application "System Events" to set {theFileName, nameExtension} to ¬
        {name, name extension} of i
    set end of documentNames to theFileName
end repeat

tell application "Numbers"
    with timeout of 500 seconds
        open theFiles
    end timeout
    
    repeat with i from 1 to count of documentNames
        set thisDocument to item i of documentNames
        try
            export document thisDocument to file ¬
                (saveToFolder & (my text 1 thru -8 of thisDocument) & "csv") as CSV
            close document thisDocument saving no
        end try
    end repeat
    
end tell