on เปิดบนแผ่นงานเฉพาะใน AppScript
ฉันมีonOpenรหัสการดำเนินการ แต่ต้องการให้ดำเนินการเฉพาะเมื่อเปิดแผ่นงานเฉพาะ (ตัวอย่างเช่นในการเปิดSheet1ฟังก์ชัน onOpen ควรทำงาน) มีใครทราบวิธีการดำเนินการนี้บ้าง
นี่คือสิ่งที่ฉันต้องการบรรลุ:
- เมื่อเปิดสเปรดชีตตรวจสอบว่าแผ่นงานที่ใช้งานอยู่คือแผ่นงาน 1 หรือไม่ ในกรณีที่ดำเนินการเงื่อนไขภายในแผ่นงานดังที่แสดงด้านล่าง:
onOpen() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
แต่นี่คือปัญหาของข้อความข้างต้น:
onOpen จะตรวจสอบเมื่อเปิดแผ่นงานเท่านั้น ฉันต้องการตรวจสอบทุกครั้งที่แผ่นงานที่ใช้งานอยู่คือ "Sheet1" ตัวอย่างเช่นในตอนแรกผู้ใช้เปิดสเปรดชีตพวกเขาไปที่ "Sheet1" ตอนนี้เงื่อนไขจะถูกตรวจสอบและแสดงผลลัพธ์ แต่จะเกิดอะไรขึ้นถ้าผู้ใช้เปลี่ยนแท็บเป็น "Sheet2" แล้วกลับมาที่ "Sheet1" ในกรณีonOpen()นั้นจะไม่ดำเนินการ ฉันต้องการตรวจสอบทุกครั้งที่ผู้ใช้เข้ามาหรือเปลี่ยนเป็น "Sheet1"
ตอนนี้เป็นอีกสถานการณ์หนึ่ง:
ใช้onSelectionChange:
onSelectionCHange() { //If the active sheet is "Sheet1" then perform this: //Sheet Execution comes here. }
ตอนนี้จะใช้งานได้ทุกครั้งที่ผู้ใช้เปลี่ยนเป็น "Sheet1" แต่นี่คือปัญหาแม้ว่าผู้ใช้จะเปลี่ยนไปใช้เซลล์อื่นใน "Sheet1" onSelectionChangeซึ่งเป็นสิ่งที่ไม่ต้องการอีกครั้ง สิ่งที่ฉันต้องการเพียงแค่เรียกใช้ฟังก์ชันทุกครั้งที่เปลี่ยนแท็บ / แผ่นงานเป็น "Sheet1" และไม่เพียง แต่เมื่อเปิดสเปรดชีตหรือเซลล์การเลือกใด ๆ มีการเปลี่ยนแปลง
คำตอบ
คำอธิบาย:
หากต้องการเรียกใช้บล็อกโค้ดภายในonOpenฟังก์ชันเฉพาะเมื่อคุณเปิดไฟล์สเปรดชีตจากSheet1จากนั้นคุณสามารถสร้างเงื่อนไข if ต่อไปนี้:
function onOpen(e) {
const as = e.source.getActiveSheet().getName();
if (as == 'Sheet1'){
//code you want to be executed when you open the spreadsheet from Sheet1
}
}
ข้อเสียเปรียบ:
OnOpenฟังก์ชั่นจะถูกดำเนินการเฉพาะเมื่อคุณเปิดสเปรดชีตไฟล์ คุณไม่สามารถสลับไปมาระหว่างแผ่นงานและคาดว่า onOpen จะทำงานได้
วิธีการแก้:
ในการรันโค้ดเมื่อสลับระหว่างแผ่นงานต่างๆคุณสามารถใช้แทนonSelectionChange(e)ได้ ตัวอย่างต่อไปนี้กำหนดค่าของเซลล์ A1 ของSheet1เมื่อคุณเปลี่ยนจากที่แตกต่างกันแผ่นSheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
as.getRange('A1').setValue("This is Sheet1");
}
}
และนี่คือเทมเพลตโค้ดทั่วไปสำหรับรันโค้ดเมื่อเปลี่ยนเป็นSheet1 :
function onSelectionChange(e) {
const as = e.source.getActiveSheet();
if (as.getName() == 'Sheet1'){
// put your code here
}
}
อ้างอิง:
- onOpen (จ)
- onSelectionChange (จ)