ไม่สามารถต่อข้อความใน JXA ได้


2

ฉันพยายามที่จะได้รับใน Javascript สำหรับระบบอัตโนมัติ bandwagon ฉันเขียนสคริปต์ด่วนที่ทำให้อีเมลคำขอเดินทางของฉันเป็นอัตโนมัติโดยมีกล่องโต้ตอบสองสามกล่อง

นี่คือรหัสของฉัน:

Mail = Application("Mail");

Mail.includeStandardAdditions = true

Origin = Mail.displayDialog(
                'Where is the trip starting from?',
                { defaultAnswer: 'Shanghai',
                  buttons:["Cancel", "Continue"],
                  defaultButton: "Continue"
            })

Destination = Mail.displayDialog(
                'Where is the trip to?',
                { defaultAnswer: "",
                  buttons:["Cancel", "Continue"],
                  defaultButton: "Continue"
            })

StartDate = Mail.displayDialog(
                'When are you leaving?',
                { title: "Onward Flight Date",
                  defaultAnswer: "",
                  buttons:["Cancel", "Continue"],
                  defaultButton: "Continue"
            })

RtnDate = Mail.displayDialog(
                'When are you returning?',
                { title: "Return Flight Date",
                  defaultAnswer: "",
                  buttons:["Cancel", "Continue"],
                  defaultButton: "Continue"
            })



content = 'Hi \n\n'

            + 'I am currently trying to arrange travel for an upcoming trip.\n\n' 

            + 'Could you please help me in sorting out the flights, hotels and airport transfers?\n\n'

            + 'Please find below the details of the trip:\n\n'

            + 'FLIGHTS\n\n'

            + 'Onward Journey:\n'+ '\n'

            + '     From \t\t\t\t- ' + Origin.text +'\n'
            + '     To \t\t\t\t\t- ' + Destination + '\n'
            + '     Date of Departure \t- ' + StartDate + '\n' + '\n'

            + 'Return Journey:\n'+ '\n'

            + '     From \t\t\t\t- ' + Destination + '\n'
            + '     To \t\t\t\t\t- ' + Origin + '\n'
            + '     Date of Departure \t- ' +RtnDate+ '\n' + '\n'

            + 'Preferred Airline \t\t\t\t- Star Alliance \n'
            + 'Meal Preference \t\t\t\t- Vegetarian\n'+ '\n'
            + 'Loyalty Program\t\t\t\t- United:\n'

            + '\n ________________________________________ \n'+ '\n'

            + 'HOTEL\n\n'
            + '     CheckIn Date \t\t- ' + StartDate + '\n'
            + '     CheckOut Date \t\t- ' + RtnDate + '\n' + '\n'

            + 'Preferred Hotels \t\t\t\t- SPG\n'

            + 'Loyalty Program \t\t\t\t- SPG:\n'

            + '\n ________________________________________ \n'+ '\n'

            + 'Thank you\n'

msg = Mail.OutgoingMessage({
        subject: 'Itinerary Request - ',
        content: content,
        visible: true 
        });

Mail.outgoingMessages.push(msg);

Mail.activate();

แต่เมื่อฉันเรียกใช้สคริปต์สถานที่ที่ฉันใช้ตัวแปรดูเหมือนจะเป็น [object Object] (แสดงด้านล่าง)

ผลลัพธ์

ใครช่วยชี้ให้เห็นว่าฉันจะไปผิดที่ไหน


1
ข้อควรสนใจ: ปิดผู้ลงคะแนน - JavaScript สำหรับระบบอัตโนมัติ (JXA) เป็นหัวข้อเนื่องจากสคริปต์มีการระบุไว้เป็นการเฉพาะในหัวข้อ สำหรับผู้ที่ไม่ทราบว่า JXA เป็นเทคโนโลยีของ Apple ที่ให้ผู้ใช้สามารถใช้ JavaScript สำหรับการสื่อสารระหว่างแอพพลิเคชั่นระหว่างแอพใน macOS
Monomeeth

อ๊ะ! แท็กจาวาสคริปต์ของฉันทำให้เกิดปัญหาหรือไม่? ขอโทษจริงๆ! ฉันไม่ได้รับอนุญาตให้แท็ก "javascript-automation"
Vinny

ไม่ต้องห่วง. ฉันได้สร้างjavascript-automationแท็กเมื่อฉันเห็นคำถามสองสามข้อในตอนนี้
Monomeeth

คำตอบ:


3

displayDialog ส่งคืนวัตถุไม่ใช่สตริง เมื่อพิมพ์วัตถุเป็นสตริงจะแสดงเป็น [วัตถุวัตถุ] วัตถุที่ส่งคืนจาก displayDialog เป็นดังนี้:

{"buttonReturned":"Continue", "textReturned":"your text here"}

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

+ '     From \t\t\t\t- ' + Origin.text +'\n'
+ '     To \t\t\t\t\t- ' + Destination + '\n'

กับ

+ '     From \t\t\t\t- ' + Origin.textReturned +'\n'
+ '     To \t\t\t\t\t- ' + Destination.textReturned + '\n'

ในอนาคตเมื่อพยายามดีบักบางสิ่งเช่นนี้ให้สร้างตัวอย่างขั้นต่ำที่สมบูรณ์และตรวจสอบได้ ในกรณีนี้ใช้ displayDialog เพียงอันเดียวและสังเกตค่าของตัวแปร (MCVE เป็นสิ่งที่จำเป็นโดยทั่วไปในคำถาม Stack Exchange และฉันคิดว่าคำถามนี้ผลักข้อ จำกัด นั้นให้ทั้งสคริปต์)


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