יצרתי יחד עם GPT אפליקציה קטנה ונחמדה למקבוק שכל מטרתה היא לחסוך למשתמש זמן בהמרת קבצי pages לdocx (וורד)
הבניה ב״ה עברה בהצלחה והאפליקציה רצה בלי שגיאות ונראית יפה
אבל הקוד שאחראי על ההמרה משום מה לא עובד
private func exportPagesToDocx(_ src: URL, to dir: URL) -> Bool {
func esc(_ s: String) -> String { // בריחת מרכאות
s.replacingOccurrences(of: "\"", with: "\\\"")
}
let dst = dir.appendingPathComponent(
src.deletingPathExtension().lastPathComponent)
.appendingPathExtension("docx")
let script = """
try
set srcFile to POSIX file "\(esc(src.path))" as alias
set dstFile to POSIX file "\(esc(dst.path))"
tell application "Pages"
if not running then
launch
repeat until running
delay 0.1
end repeat
end if
activate
set theDoc to open srcFile
repeat until exists front document
delay 0.05
end repeat
export theDoc to dstFile as Microsoft Word
close theDoc saving no
end tell
return "OK"
on error errMsg
return errMsg
end try
"""
let task = Process()
task.launchPath = "/usr/bin/osascript"
task.arguments = ["-e", script]
let pipe = Pipe()
task.standardOutput = pipe
task.standardError = pipe
task.launch(); task.waitUntilExit()
let output = String(data: pipe.fileHandleForReading.readDataToEndOfFile(),
encoding: .utf8) ?? ""
print("AppleScript-out:",
output.trimmingCharacters(in: .whitespacesAndNewlines),
"| status:", task.terminationStatus)
return output.contains("OK") &&
FileManager.default.fileExists(atPath: dst.path)
}
// MARK:- פתיחת Share-Sheet
private func openShareSheet(files: [URL], from view: NSView) {
let picker = NSSharingServicePicker(items: files)
picker.show(relativeTo: .zero, of: view, preferredEdge: .minY)
}
זהו הקוד שאחרי על הסקשן של ההמרה
מטרתו היא לפתוח את pages ברקע ולעשות ייצוא של הקובץ הנבחר לdocx
אשמח אם אי מי ממשתמשי הפורום שמכיר את הנושא יעזור לי (מכיוון שאני עושה את זה בתור לימוד הפלטפורמה מן המובן שאני גם לא אוכל לשלם..)
בתודה מראש