Monday, August 02, 2004

AppleScript ต้องใจเย็นๆ

อาจจะเป็นเพราะเครื่องที่ใช้อยู่มันช้า (TiBook G4/400) ก็ได้ แต่ว่านั่งหาอยู่ตั้งนานว่า AppleScript ที่เคยใช้งานได้บนเครื่องนึง (PowerBook G3/500) ทำไมพอรันบนอีกเครื่องนึงถึงไม่ได้ผล ขึ้นแต่ Error ตลอด !

เป็นโปรแกรม AppleScript สำหรับเรียก PowerPoint มาแปลงไฟล์ .PPT ให้เป็น .JPG แบบ Batch

$ cat conv-ppt-mac.sh 
osascript <<EOF
(*
-- Test script for automating Microsoft PowerPoint
-- Open a ppt file and save as JPG
-- By Hui
*)

tell application "Microsoft PowerPoint"
activate
do Visual Basic "Presentations.Open FileName:=\"$1.ppt\" 

ActivePresentation.Export Path:=\"$1-sli\", FilterName:=\"jpg\"

Do While Presentations.Count > 0
ActivePresentation.Close
Loop

"
quit
end tell
EOF
เขียนเสร็จใหม่ๆ ลองบน PowerBook G3/500 ก็ใช้งานได้ดี แต่พอเอาไปลองบน G4/400 มันตายทุกที บอกว่า "do Visual Basic: Invalid Command" ทำนองนี้

สงสัยว่าเป็นเพราะ PowerPoint คนละ Version ? OS คนละ Version ? แต่มันก็ต่างกันไม่มาก แค่ Office X + Mac OS 10.2 (เครื่องที่ใช้ได้) กับ Office X SR1 + Mac OS 10.3 (เครื่องที่มีปัญหา)

ลองหลายๆที พบว่าถ้าเปิด PowerPoint ทิ้งไว้ก่อน มันจะทำงานได้แฮะ เดาว่าเป็นเพราะส่งคำสั่งเร็วเกินไป PowerPoint อาจจะยังไม่พร้อม แก้เป็น

...
activate
delay 3
do Visual Basic "Presentations.Open FileName:=\"$1.ppt\" 
...
เพิ่ม delay 3 วินาทีบรรทัดเดียว ใช้ได้เลย หาอยู่ตั้งนาน

osascript นี่ก็หาไม่เจอเหมือนกันว่าจะให้อ่านค่าชื่อไฟล์ PPT จาก Argument ยังไง (หรือ AppleScript มันไม่รับ Command-Line Argument อยู่แล้วเพราะเน้นใช้งานแบบ GUI ?) เห็นเขาใช้ผ่าน shell script อีกทีแบบนี้ ก็เลียนแบบมาเลย

No comments: