เพิ่มทริกเกอร์สคริปต์ใน Google ชีตที่จะทำงานในแอพมือถือ Android


13

ฉันมีแผ่นงาน Google ที่มีสคริปต์ที่ควรเรียกใช้เมื่อคลิกปุ่ม วิธีที่แนะนำในการทำเช่นนี้ (เท่าที่ฉันสามารถบอกได้) คือการแทรกรูปภาพแล้วแนบสคริปต์กับภาพที่เป็นปัญหา

ทำงานได้ดีตราบใดที่ฉันเปิดแผ่นงานบนเดสก์ท็อปของฉัน อย่างไรก็ตามถ้าฉันเปิดแผ่นงานในแอป Android แผ่นงาน Google รูปภาพก็ไม่ปรากฏ เท่าที่ฉันสามารถบอกได้ว่าพฤติกรรม (ขาด) นี้ไม่ได้มีการบันทึกไว้ที่ใด แต่ฉันพบคนจำนวนมากที่มีปัญหาเดียวกัน

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


2
นี่เป็นปัญหาของแอพชีตดั้งเดิมสำหรับ Android ใช่ไหม คำถามของคุณอาจจะดีกว่าที่ผู้ที่ชื่นชอบ Android
เบียร์

1
@เบียร์. นั่นเป็นวิธีหนึ่งในการดู แต่เพื่อเอาชนะปัญหานั้นเราต้องมีความรู้เกี่ยวกับ Google ชีตไม่ใช่ความรู้เกี่ยวกับ Android

@ ปกติ: นั่นเป็นเหตุผลที่ฉันถามคำถาม (และไม่ได้ลงคะแนนให้ปิด) ฉันแค่พยายามช่วย Asker ดึงดูดผู้เชี่ยวชาญ (ise) ที่จำเป็นในการรับคำตอบ
เบียร์

คำตอบ:


26

ดูเหมือนว่าทั้งรูปภาพและรายการเมนูที่กำหนดเองไม่ทำงานในแอพชีต Android ในปัจจุบัน ฉันแนะนำให้สร้าง "เมนูฟังก์ชั่น" ภายในสเปรดชีต ตัวอย่างเช่น:

  1. เซลล์ A1 แจ้งว่า "เลือกฟังก์ชั่น"
  2. เซลล์ B1 มีกฎการตรวจสอบความถูกต้องของข้อมูลที่ จำกัด เนื้อหาไว้ที่ชื่อของฟังก์ชันที่คุณมี ในตัวอย่างของฉันมันคือ "insertSomething" และ "convertSomething" (อย่าทำเครื่องหมายที่ "แสดงความช่วยเหลือ" ในช่องโต้ตอบการตรวจสอบความถูกต้องของข้อมูลป๊อปอัพ "ช่วย" เป็นสิ่งที่สร้างความรำคาญให้กับมือถือ)
  3. ฟังก์ชั่นสคริปต์onEdit(ทริกเกอร์ง่าย) ทำงานในทุกการแก้ไขตรวจสอบว่าเนื้อหาของ B1 มีการเปลี่ยนแปลงหรือไม่ ถ้าเป็นเช่นนั้นมันจะเรียกใช้ฟังก์ชันที่เหมาะสม

นี่คือรหัสของฉันมีสองฟังก์ชั่นรวมไว้เพื่อการสาธิต:

function onEdit(e) {
  if (e.range.getA1Notation() == 'B1') {
    if (/^\w+$/.test(e.value)) {        
      this[e.value]();
      e.range.clear();
    }
  }
}

function insertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(2,3).setValue('inserted something');
}  

function convertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(3,3).setValue('converted something');
}  

เงื่อนไข/^\w+$/.test(e.value)เป็นเพียงการตรวจสอบว่าเรามีสตริงที่ไม่ว่างเปล่าและไม่ได้เรียกใช้รหัสที่เป็นอันตรายซึ่งบางคนใส่ไว้ในเซลล์ B1 หลังจากฟังก์ชั่น envoked ด้วยthis[e.value]();( thisหมายถึงวัตถุทั่วโลกและมีชื่อฟังก์ชั่น) เนื้อหาของ B1 จะถูกล้าง หนึ่งสามารถเลือกที่จะเรียกใช้ฟังก์ชั่นเดียวกันอีกครั้งหรืออีกฟังก์ชั่นหนึ่ง

เพื่อเป็นการพิสูจน์แนวคิดนี่คือภาพหน้าจอจากแอป ภาพหน้าจอ 1: เลือกฟังก์ชั่น

เลือก

สกรีนช็อต 2: หลังจากใช้งานฟังก์ชันได้แล้ว

หลังจาก

อ้างอิง


1
ใช้งานได้นานเท่าที่ฟังก์ชั่นที่เรียกใช้ไม่ได้ใช้ในการส่งอีเมล อีเมลไม่สามารถถูกเรียกใช้โดยผู้ฟังที่แก้ไขดังนั้นปัญหาของปุ่ม / เมนูที่กำหนดเองจึง จำกัด
10klines

2
@ 10klines ในกรณีนั้นให้เปลี่ยนonEditทริกเกอร์อย่างง่ายเป็นสิ่งที่สามารถติดตั้งได้ซึ่งจะทำงานโดยได้รับอนุญาตจากผู้ใช้ที่ติดตั้งทริกเกอร์

หากคุณต้องการคุณสามารถใช้ช่องทำเครื่องหมายเพื่อเรียกใช้ฟังก์ชันแทนรูปภาพหรือการตรวจสอบข้อมูล ด้วยฟังก์ชั่น eval แท็บเล็ตของฉันไม่ทำงานดังนั้นฉันจึงตั้งค่าช่องทำเครื่องหมายมากมายสำหรับแต่ละฟังก์ชั่น ฉันปรับรหัสตามและใช้งานได้ดี คำแนะนำ: หากคุณมีแท็บเล็ตไม่ได้ใช้กล่องข้อความ - ไม่ทำงานด้วยเหตุผลบางอย่าง
Tobias Sarnow

นี่เป็นวิธีแก้ปัญหาที่ดี แต่ไม่สามารถใช้งานได้หากมีการเรียกใช้ฟังก์ชั่นนี้เพื่อโทรไปยัง API และรับการตอบกลับจากฟังก์ชันดังกล่าวเนื่องจากกำลังขอการอนุมัติจาก Google มีงานอะไรอีกไหม?
JB

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