เว็บแอป

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

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

ข้อกำหนดสำหรับเว็บแอป

คุณจะเผยแพร่สคริปต์เป็นเว็บแอปได้หากเป็นไปตามข้อกำหนดต่อไปนี้

พารามิเตอร์คำขอ

เมื่อผู้ใช้เข้าชมแอปหรือโปรแกรมส่งคำขอ HTTP GET ไปยังแอป Google Apps Script จะเรียกใช้ฟังก์ชัน doGet เมื่อโปรแกรมส่งคำขอ HTTP POST ไปยังแอป Apps Script จะเรียกใช้ doPost แทน ใน ทั้ง 2 กรณี อาร์กิวเมนต์ e จะแสดงพารามิเตอร์เหตุการณ์ที่มีข้อมูลเกี่ยวกับพารามิเตอร์คำขอใดก็ได้ โครงสร้างของออบเจ็กต์เหตุการณ์แสดงอยู่ในตารางต่อไปนี้

ช่อง
e.queryString

ค่าของส่วนสตริงการค้นหาของ URL หรือ null หากไม่ได้ระบุสตริงการค้นหา

name=alice&n=1&n=2
e.parameter

ออบเจ็กต์ของคู่คีย์/ค่าที่สอดคล้องกับพารามิเตอร์คำขอ ระบบจะแสดงค่าแรกเท่านั้นสำหรับพารามิเตอร์ที่มีค่าหลายค่า

{"name": "alice", "n": "1"}
e.parameters

ออบเจ็กต์ที่คล้ายกับ e.parameter แต่มีอาร์เรย์ของ ค่าสำหรับแต่ละคีย์

{"name": ["alice"], "n": ["1", "2"]}
e.pathInfo

เส้นทาง URL หลัง /exec หรือ /dev เช่น หากเส้นทาง URL ลงท้ายด้วย /exec/hello ข้อมูลเส้นทางจะเป็น hello

e.contextPath ไม่ได้ใช้ จะเป็นสตริงว่างเสมอ
e.contentLength

ความยาวของเนื้อความคำขอสำหรับคำขอ POST หรือ -1 สำหรับคำขอ GET

332
e.postData.length

เหมือนกับ e.contentLength

332
e.postData.type

ประเภท MIME ของเนื้อความ POST

text/csv
e.postData.contents

ข้อความเนื้อหาของเนื้อความ POST

Alice,21
e.postData.name

ค่า "postData" เสมอ

postData

ส่งพารามิเตอร์ เช่น username และ age ไปยัง URL ดังนี้

https://script.google.com/.../exec?username=jsmith&age=21

แสดงพารามิเตอร์ดังนี้

function doGet(e) {
  var params = JSON.stringify(e);
  return ContentService.createTextOutput(params).setMimeType(ContentService.MimeType.JSON);
}

ในตัวอย่างก่อนหน้า doGet จะแสดงผลลัพธ์ต่อไปนี้

{
  "queryString": "username=jsmith&age=21",
  "parameter": {
    "username": "jsmith",
    "age": "21"
  },
  "contextPath": "",
  "parameters": {
    "username": [
      "jsmith"
    ],
    "age": [
      "21"
    ]
  },
  "contentLength": -1
}

ระบบสงวนชื่อพารามิเตอร์ต่อไปนี้ไว้และไม่ควร ใช้ในพารามิเตอร์ของ URL หรือเนื้อหา POST

  • c
  • sid

การใช้พารามิเตอร์เหล่านี้อาจส่งผลให้เกิดการตอบกลับ HTTP 405 พร้อมข้อความแสดงข้อผิดพลาด "ขออภัย ไม่มีไฟล์ที่คุณขอ" หากเป็นไปได้ ให้อัปเดตสคริปต์เพื่อใช้ชื่อพารามิเตอร์อื่น

ใช้งานสคริปต์เป็นเว็บแอป

หากต้องการทําให้สคริปต์ใช้งานได้ในรูปแบบเว็บแอป ให้ทําตามขั้นตอนต่อไปนี้

  1. ที่ด้านขวาบนของโปรเจ็กต์สคริปต์ ให้คลิกการติดตั้งใช้งาน > การติดตั้งใช้งานใหม่
  2. คลิกเปิดใช้ประเภทการติดตั้งใช้งาน > เว็บแอป ข้าง "เลือกประเภท "
  3. ป้อนข้อมูลเกี่ยวกับเว็บแอปในช่องต่างๆ ใต้ "การกำหนดค่าการ ติดตั้งใช้งาน"
  4. คลิกทำให้ใช้งานได้

แชร์ URL ของเว็บแอปกับผู้ที่คุณต้องการให้ใช้แอปของคุณ โดยคุณต้องให้สิทธิ์เข้าถึงแก่ผู้ใช้เหล่านั้นก่อน

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

ทดสอบการติดตั้งใช้งานเว็บแอป

หากต้องการทดสอบสคริปต์เป็นเว็บแอป ให้ทำตามขั้นตอนด้านล่าง

  1. ที่ด้านขวาบนของโปรเจ็กต์สคริปต์ ให้คลิกทําให้ใช้งานได้ > ทดสอบ การทําให้ใช้งานได้
  2. ข้าง "เลือกประเภท" ให้คลิกเปิดใช้ประเภทการติดตั้งใช้งาน > เว็บแอป
  3. คลิกคัดลอกใต้ URL ของเว็บแอป
  4. วาง URL ในเบราว์เซอร์และทดสอบเว็บแอป

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

หากต้องการทดสอบฟีเจอร์ OAuth แบบละเอียดใน เว็บแอป โปรดตรวจสอบว่าโปรเจ็กต์ของคุณยังไม่มีการให้สิทธิ์บางอย่าง หากต้องการยกเลิกการให้สิทธิ์ที่มีอยู่ ให้ใช้ ScriptApp.invalidateAuth สําหรับเว็บแอปที่ได้ติดตั้งใช้งานและกําลังทํางานอยู่แล้ว ภายใต้ข้อมูลประจําตัวของผู้ใช้ที่ใช้งานอยู่ ให้แก้ไขฟิลด์ executeAs JSON ในไฟล์ Manifest เป็น USER_DEPLOYING

เมื่อนำเว็บแอปไปใช้ให้ทำงานในฐานะนักพัฒนาแอป ให้ใช้ความระมัดระวังเป็นอย่างยิ่งเมื่อ จัดการโทเค็น OAuth ที่ได้รับผ่าน ScriptApp.getOAuthToken โทเค็นเหล่านี้สามารถให้สิทธิ์แอปพลิเคชันอื่นๆ เข้าถึงข้อมูลของคุณได้ ดังนั้นจึงไม่ควรส่งโทเค็นไปยังไคลเอ็นต์

สิทธิ์

สิทธิ์สำหรับเว็บแอปจะแตกต่างกันไปตามวิธีที่คุณเลือกเรียกใช้ แอป

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

Apps Script กำหนดขีดจำกัดของอัตราที่ผู้ใช้ใหม่สามารถให้สิทธิ์เว็บแอปที่เรียกใช้ในฐานะผู้ใช้เพื่อป้องกันการละเมิด ขีดจำกัดเหล่านี้ ขึ้นอยู่กับปัจจัยต่างๆ รวมถึงว่าบัญชีที่เผยแพร่เป็นส่วนหนึ่งของโดเมน Google Workspace หรือไม่

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

ฝังเว็บแอปใน Google Sites {:#embed-web-app}

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

หากต้องการฝังเว็บแอปใน Sites คุณต้องติดตั้งใช้งานก่อน นอกจากนี้ คุณยังต้องมีURL ที่ทำให้ใช้งานได้ จากกล่องโต้ตอบทำให้ใช้งานได้

หากต้องการฝังเว็บแอปในหน้า Sites ให้ทำตามขั้นตอนต่อไปนี้

  1. เปิดหน้าเว็บไซต์ที่คุณต้องการเพิ่มเว็บแอป
  2. เลือกแทรก > ฝัง URL
  3. วาง URL ของเว็บแอป แล้วคลิกเพิ่ม

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

เว็บแอปและประวัติเบราว์เซอร์

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

Apps Script มี JavaScript API แบบไม่พร้อมกัน 2 รายการฝั่งไคลเอ็นต์ เพื่อช่วยในการสร้างเว็บแอปที่ลิงก์กับประวัติเบราว์เซอร์ ดังนี้

  • google.script.history มีเมธอดที่อนุญาตให้ตอบสนองแบบไดนามิกต่อการเปลี่ยนแปลงประวัติการเข้าชมเบราว์เซอร์ ซึ่งรวมถึงการพุชสถานะ (ออบเจ็กต์อย่างง่ายที่คุณกำหนด) ลงในประวัติของเบราว์เซอร์ การแทนที่สถานะบนสุดในสแต็กประวัติ และการตั้งค่าฟังก์ชันเรียกกลับของ Listener เพื่อตอบสนองต่อการเปลี่ยนแปลงประวัติ

  • google.script.url มีวิธีดึงพารามิเตอร์ URL และส่วนย่อย URL ของหน้าเว็บปัจจุบัน หากมี

API ประวัติเหล่านี้ใช้ได้กับเว็บแอปเท่านั้น โดยไม่รองรับ แถบด้านข้าง กล่องโต้ตอบ หรือส่วนเสริม นอกจากนี้ เรายังไม่แนะนําให้ใช้ฟังก์ชันนี้ในเว็บแอปที่ฝังอยู่ใน Sites ด้วย