สร้างส่วนเสริม Google Workspace ในฟังก์ชันระบบคลาวด์โดยไม่ต้องใช้ Apps Script
วัตถุประสงค์
- ตั้งค่าสภาพแวดล้อม
- สร้างและทําให้ Cloud Function ใช้งานได้
- สร้างและทําให้ส่วนเสริมใช้งานได้
- ติดตั้งส่วนเสริม
สิ่งที่ต้องดำเนินการก่อน
- โปรเจ็กต์ Google Cloud
- ตรวจสอบว่าได้เปิดการเรียกเก็บเงินสําหรับโปรเจ็กต์ Cloud แล้ว ดูวิธียืนยันสถานะการเรียกเก็บเงินของโปรเจ็กต์
- มีการกําหนดค่า Cloud SDK ด้วยโปรเจ็กต์
ตั้งค่าสภาพแวดล้อม
เปิดโปรเจ็กต์ที่อยู่ในระบบคลาวด์ใน Google Cloud Console
- ไปที่หน้าเลือกโปรเจ็กต์ในคอนโซล Google Cloud
- เลือกโปรเจ็กต์ Google Cloud ที่ต้องการใช้ หรือคลิกสร้างโปรเจ็กต์และทําตามวิธีการบนหน้าจอ หากคุณสร้างโปรเจ็กต์ Google Cloud คุณอาจต้องเปิดการเรียกเก็บเงินสําหรับโปรเจ็กต์
กําหนดค่าหน้าจอขอความยินยอม OAuth
ส่วนเสริมของ Google Workspace ต้องมีการกําหนดค่าหน้าจอขอความยินยอม การกําหนดค่าหน้าจอขอความยินยอม OAuth ของส่วนเสริมจะกําหนดสิ่งที่ Google แสดงต่อผู้ใช้
- ในคอนโซล Google Cloud ให้ไปที่เมนู > API และบริการ > หน้าจอขอความยินยอม OAuth
- เลือกประเภทผู้ใช้สําหรับแอป แล้วคลิกสร้าง
- กรอกแบบฟอร์มการลงทะเบียนแอป แล้วคลิกบันทึกและต่อไป
ในระหว่างนี้ คุณสามารถข้ามการเพิ่มขอบเขต แล้วคลิกบันทึกและต่อไป ในอนาคตเมื่อคุณสร้างแอปสําหรับการใช้งานภายนอกองค์กร Google Workspace คุณต้องเพิ่มและยืนยันขอบเขตการให้สิทธิ์ที่แอปต้องการ
- หากเลือกภายนอกสําหรับประเภทผู้ใช้ ให้เพิ่มผู้ใช้ทดสอบ ดังนี้
- ในส่วนทดสอบผู้ใช้ ให้คลิกเพิ่มผู้ใช้
- ป้อนอีเมลและผู้ใช้ทดสอบคนอื่นๆ ที่ได้รับอนุญาต จากนั้นคลิกบันทึกและดําเนินการต่อ
- ดูสรุปการลงทะเบียนแอป หากต้องการทําการเปลี่ยนแปลง ให้คลิกแก้ไข หากการลงทะเบียนแอปถูกต้องแล้ว ให้คลิกกลับไปที่หน้าแดชบอร์ด
สร้างและทําให้ Cloud Function ใช้งานได้
ในเทอร์มินัลในเครื่อง ให้เปิด Cloud Functions, Cloud Build และ API ของส่วนเสริม ดังนี้
gcloud services enable cloudfunctions cloudbuild.googleapis.com gsuiteaddons.googleapis.com
สร้างไดเรกทอรี
function.js
ในไดเรกทอรีเปล่าด้วยโค้ดต่อไปนี้/** * Google Cloud Function that loads the homepage for a * Google Workspace Add-on. * * @param {Object} req Request sent from Google * @param {Object} res Response to send back */ exports.loadHomePage = function addonsHomePage (req, res) { res.send(createAction()); }; /** Creates a card with two widgets. */ function createAction() { return { "action": { "navigations": [ { "pushCard": { "header": { "title": "Cats!" }, "sections": [ { "widgets": [ { "textParagraph": { "text": "Your random cat:" } }, { "image": { "imageUrl": "https://cataas.com/cat" } } ] } ] } } ] } }; }
ทําให้ฟังก์ชันใช้งานได้:
gcloud functions deploy loadHomePage --runtime nodejs12 --trigger-http
หากได้รับข้อความแจ้ง ให้ระบุว่าไม่อนุญาตให้เรียกใช้ฟังก์ชันที่ไม่ได้ตรวจสอบสิทธิ์ อาจต้องใช้เวลาสักครู่เพื่อให้ฟังก์ชันใช้งานได้
สร้างการทําให้ส่วนเสริมใช้งานได้
ค้นหาอีเมลบัญชีบริการของส่วนเสริม
gcloud workspace-add-ons get-authorization
มอบบทบาท
cloudfunctions.invoker
ให้กับบัญชีบริการgcloud functions add-iam-policy-binding loadHomePage \ --role roles/cloudfunctions.invoker \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL
รับ URL ของฟังก์ชันที่ทําให้ใช้งานได้:
gcloud functions describe loadHomePage
สร้างไฟล์
deployment.json
ด้วยรหัสตัวอย่างต่อไปนี้ แทนที่URL
ด้วย URL ของฟังก์ชันที่ทําให้ใช้งานได้จากขั้นตอนก่อนหน้า{ "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"], "addOns": { "common": { "name": "My HTTP Add-on", "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png", "homepageTrigger": { "runFunction": "URL" } }, "gmail": {}, "drive": {}, "calendar": {}, "docs": {}, "sheets": {}, "slides": {} } }
วิธีสร้างการทําให้ใช้งานได้
gcloud workspace-add-ons deployments create quickstart \ --deployment-file=deployment.json
ติดตั้งส่วนเสริม
ติดตั้งการทําให้ใช้งานได้ในโหมดการพัฒนา
gcloud workspace-add-ons deployments install quickstart
เปิดหรือโหลด Gmail ซ้ําเพื่อดูส่วนเสริม มองหาไอคอนบีกเกอร์ ในแถบเครื่องมือทางด้านขวา
คลิกไอคอนเพื่อเปิดส่วนเสริม ให้สิทธิ์ส่วนเสริมหากได้รับแจ้ง
ล้างข้อมูล
ถอนการติดตั้งส่วนเสริมจากบัญชี Google
gcloud workspace-add-ons deployments uninstall quickstart
หากต้องการหลีกเลี่ยงการเรียกเก็บเงินสําหรับทรัพยากรที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้ ให้ลบโปรเจ็กต์
gcloud projects delete PROJECT_ID
แทนที่ PROJECT_ID ด้วยรหัสของโปรเจ็กต์ที่คุณใช้ในการเริ่มต้นอย่างรวดเร็ว คุณค้นหารหัสโปรเจ็กต์ใน Cloud Console ได้ในหน้าแดชบอร์ด