การตั้งค่าของเซลล์ Numbers โดยใช้ AppleScript


3

ฉันพยายามเขียนสคริปต์ตัวเลข (เพื่อทำสิ่งนี้ตามที่มันเกิดขึ้น) ซึ่งฉันต้องเปลี่ยนค่าของเซลล์

อย่างไรก็ตามถ้าฉันทำอะไรเช่น

tell application "Numbers"
    activate
    tell document 1
        tell sheet 3
            set the value of cell "E1" to 1000
        end tell
    end tell
end tell

จากนั้นฉันได้รับข้อผิดพลาด

 error "Numbers got an error: Can’t set cell \"E1\" of sheet 3 of document 1 to 1000." number -10006 from cell "E1" of sheet 3 of document 1

แต่สิ่งนี้ไม่มีข้อมูลเกี่ยวกับสาเหตุที่ไม่สามารถตั้งค่าเซลล์นั้นได้ เอกสารแผ่นงานและเซลล์ทั้งหมดมีอยู่

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


ฉันกำลังคิดว่าคุณควรจะทำงานอะไร แต่ตอนนี้ฉันไม่ได้อยู่หน้า Mac ดังนั้นจึงไม่สามารถเล่นกับสิ่งนี้ได้ หากมีคนอื่นไม่เข้ามาก่อนที่ฉันจะกลับมาอยู่หน้า Mac ฉันจะทดสอบเมื่อสิ้นสุด ฉันค่อนข้างมั่นใจว่ารหัสข้อผิดพลาดที่คุณได้รับนั้นหมายถึงการถูกปฏิเสธการอนุญาตให้เขียนไฟล์ มีอะไรบ้างที่อาจอธิบายได้ว่าทำไมคุณถึงถูกปฏิเสธไม่อนุญาตให้ตั้งค่า? หมายเลขกำลังทำงานอยู่หรือไม่ สเปรดชีตเปิดอยู่หรือไม่ อื่น ๆ อีก?
Monomeeth

@Moomeetheth ขอบคุณที่มองเข้าไป มีไฟล์อยู่และเปิดใน Numbers ปัจจุบันเป็นเอกสารที่อยู่ข้างหน้าและถูกบันทึกไว้ในโฟลเดอร์ย่อยของโฟลเดอร์เอกสารของฉันซึ่งไม่ควรมีปัญหาเกี่ยวกับการอนุญาตของไฟล์
นาธาเนียล

(สิ่งหนึ่งคือว่ามีเอกสารที่ไม่ได้บันทึกอื่น ๆ ที่เปิดอยู่ในขณะนี้ซึ่งฉันไม่ต้องการที่จะบันทึกหรือปิดในขณะนี้ความเข้าใจของฉันคือ "เอกสาร 1" หมายถึงหน้าต่างด้านหน้าเสมอ แต่ฉันไม่พบ ที่ระบุไว้ในเอกสารใด ๆ และถ้าฉันผิดฉันคิดว่ามันอาจจะพยายามตั้งค่าเซลล์ในเอกสารอื่น ๆ .)
นาธาเนียล

อืมฉันพบข้อผิดพลาดที่คล้ายกันพยายามรับชื่อไฟล์ของเอกสาร 1 หรือพยายามรับค่าของเซลล์ A1 ในแผ่นงาน 1 ดังนั้นฉันเดาว่าปัญหาคือการเข้าถึงเอกสาร 1 เลย
นาธาเนียล

เช่นerror "Numbers got an error: Can’t get cell \"A1\" of sheet 1 of document 1." number -1728 from cell "A1" of sheet 1 of document 1(ฉันจะแก้ไขทั้งหมดนี้เป็นคำถามในภายหลัง)
นาธาเนียล

คำตอบ:


3

ฉันอยู่หน้าเครื่อง Mac อีกครั้งและให้รหัสของคุณหายไปและได้รับข้อผิดพลาดเดียวกันดังนั้นจึงอาจทำให้เข้าใจผิดในแง่ของความหมายที่แท้จริง

อย่างไรก็ตามฉันได้ลองเล่นกับสคริปต์ของคุณสักเล็กน้อยและสามารถรับรหัสเพื่อทำงานได้โดยใช้รหัสต่อไปนี้:

tell application "Numbers"
  tell table 1 of sheet 3 of document 1
    set the value of cell 1 of column "E" to 1000
  end tell
end tell

อย่างไรก็ตามตอนนี้ที่ฉันได้งานนี้ฉันแค่อยากจะติดธงว่าคุณกำลังเขียนโค้ดของเซลล์อย่างหนัก ฯลฯ นั่นคือถ้าตำแหน่งเปลี่ยนไปสคริปต์ก็จะไม่เป็นแบบไดนามิก ไม่ว่าจะเป็นปัญหาสำหรับคุณหรือไม่นั้นขึ้นอยู่กับสิ่งที่คุณพยายามทำและวิธีการออกแบบสเปรดชีต Numbers ของคุณ


เย่! ใช่นั่นใช้งานได้ - การระบุตารางอย่างชัดเจนเป็นขั้นตอนที่จำเป็นซึ่งฉันพลาดไป
นาธาเนียล

(นี่คือแฮ็คด่วนที่ไม่จำเป็นต้องทำงานหลังจากวันพรุ่งนี้ไม่เช่นนั้นฉันจะทำอย่างถูกต้องแทนการเข้ารหัสอย่างหนักดังนั้นขอบคุณสำหรับคำตอบอย่างรวดเร็วมันจะสร้างความแตกต่างและชื่นชมอย่างมาก!)
นาธาเนียล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.