เมนูที่กําหนดเองใน Google Workspace

สคริปต์สามารถขยายผลิตภัณฑ์บางอย่างของ Google ได้โดยการเพิ่มองค์ประกอบอินเทอร์เฟซผู้ใช้ที่จะเรียกใช้ฟังก์ชัน Apps Script เมื่อมีการคลิก ตัวอย่างที่พบบ่อยที่สุดคือการเรียกใช้สคริปต์จากรายการเมนูที่กำหนดเองใน Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม แต่คุณยังเรียกใช้ฟังก์ชันสคริปต์ได้โดยคลิกรูปภาพและภาพวาดใน Google ชีต

เมนูที่กำหนดเองใน Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม

Apps Script สามารถเพิ่มเมนูใหม่ใน Google เอกสาร, ชีต, สไลด์ หรือฟอร์ม โดยที่แต่ละรายการในเมนูจะเชื่อมโยงกับฟังก์ชันในสคริปต์ (ใน Google ฟอร์ม เมนูที่กำหนดเองจะแสดงต่อผู้แก้ไขที่เปิดแบบฟอร์มเพื่อแก้ไขเท่านั้น ผู้ใช้ที่เปิดแบบฟอร์มเพื่อตอบกลับจะไม่เห็นเมนูดังกล่าว)

สคริปต์จะสร้างเมนูได้ก็ต่อเมื่อเชื่อมโยงกับเอกสาร สเปรดชีต หรือแบบฟอร์มเท่านั้น หากต้องการแสดงเมนูเมื่อผู้ใช้เปิดไฟล์ ให้เขียนโค้ดเมนูภายในฟังก์ชัน onOpen()

ตัวอย่างด้านล่างแสดงวิธีเพิ่มเมนูที่มี 1 รายการ ตามด้วยตัวคั่นแบบภาพ แล้วตามด้วยเมนูย่อยที่มีอีกรายการหนึ่ง (โปรดทราบว่าใน Google ชีต คุณต้องใช้สคีนแท็ก addMenu() แทน ยกเว้นในกรณีที่ใช้เวอร์ชันใหม่ และจะใช้เมนูย่อยไม่ได้) เมื่อผู้ใช้เลือกรายการเมนูรายการใดรายการหนึ่ง ฟังก์ชันที่เกี่ยวข้องจะเปิดกล่องโต้ตอบการแจ้งเตือน ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทของกล่องโต้ตอบที่เปิดได้ได้ที่คู่มือเกี่ยวกับกล่องโต้ตอบและแถบด้านข้าง

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the second menu item!');
}

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

รูปภาพและภาพวาดที่คลิกได้ใน Google ชีต

นอกจากนี้ คุณยังกำหนดฟังก์ชัน Apps Script ให้กับรูปภาพหรือภาพวาดใน Google ชีตได้ด้วย ตราบใดที่สคริปต์เชื่อมโยงกับสเปรดชีต ตัวอย่างด้านล่างแสดงวิธีตั้งค่า

  1. ใน Google ชีต ให้เลือกรายการเมนูส่วนขยาย > Apps Script เพื่อสร้างสคริปต์ที่เชื่อมโยงกับสเปรดชีต
  2. ลบโค้ดทั้งหมดในตัวแก้ไขสคริปต์ แล้ววางโค้ดด้านล่าง

      function showMessageBox() {
        Browser.msgBox('You clicked it!');
      }
    
  3. กลับไปที่ชีตและแทรกรูปภาพหรือภาพวาดโดยเลือกแทรก > รูปภาพหรือแทรก > ภาพวาด

  4. หลังจากแทรกรูปภาพหรือภาพวาดแล้ว ให้คลิกรูปภาพหรือภาพวาดนั้น เมนูแบบเลื่อนลงขนาดเล็กจะปรากฏขึ้นที่มุมขวาบน คลิกแล้วเลือกมอบหมายสคริปต์

  5. ในกล่องโต้ตอบที่ปรากฏขึ้น ให้พิมพ์ชื่อฟังก์ชันสคริปต์ของแอปที่ต้องการเรียกใช้โดยไม่มีวงเล็บ ซึ่งในกรณีนี้คือ showMessageBox คลิกตกลง

  6. คลิกรูปภาพหรือภาพวาดอีกครั้ง ฟังก์ชันจะทำงาน