เพิ่มศักยภาพให้กล่องจดหมาย Gmail ด้วยฟังก์ชันของ Google Cloud

1. บทนำ

ธุรกิจและบุคคลหลายพันล้านรายใช้ Gmail และบริการ G Suite อื่นๆ เพื่อสื่อสารและประมวลผลข้อมูล Google มี G Suite API ที่ช่วยให้คุณเข้าถึงข้อมูลในบริการเหล่านี้แบบเป็นโปรแกรมได้ และคุณใช้ API ดังกล่าวเพื่อทำให้เวิร์กโฟลว์รายวันทำงานโดยอัตโนมัติได้อย่างง่ายดาย ใน Lab นี้ คุณจะได้สร้างส่วนขยาย Gmail ที่มีประสิทธิภาพ ซึ่งจะจัดหมวดหมู่อีเมลในข้อความขาเข้าโดยอัตโนมัติ และบันทึกหมวดหมู่เหล่านั้นไว้ใน Google ชีต ส่วนขยายนี้จะใช้ RESTful API, Google Cloud Functions และบริการอื่นๆ ของ Google Cloud Platform

สิ่งที่คุณจะสร้าง

ในห้องทดลองนี้ คุณจะสร้างและทำให้ฟังก์ชันระบบคลาวด์บางรายการเชื่อมต่อกับ G Suite API และบริการอื่นๆ ของ Google Cloud Platform ใช้งานได้ ฟังก์ชันเหล่านี้จะ

  • ให้สิทธิ์เข้าถึงข้อมูล Gmail และ Google ชีตอย่างปลอดภัย
  • ดึงรูปภาพที่แนบอยู่กับอีเมลขาเข้า
  • จัดหมวดหมู่รูปภาพเหล่านั้นโดยใช้ Cloud Vision API
  • เขียนหมวดหมู่ ที่อยู่ของผู้ส่ง และชื่อไฟล์แนบลงใน Google ชีต

สิ่งที่คุณจะได้เรียนรู้

  • ข้อมูลพื้นฐานเกี่ยวกับ RESTful API ของ G Suite
  • ข้อมูลพื้นฐานของ Google Cloud Functions และบริการอื่นๆ ของ Google Cloud Platform
  • วิธีเข้าถึง Gmail แบบเป็นโปรแกรมโดยใช้ Google Cloud Functions

สิ่งที่ต้องมี

  • บัญชี Google ที่มีสิทธิ์เข้าถึง Gmail และ Google ชีต หากยังไม่มี ให้สร้างบัญชีที่นี่
  • ความรู้พื้นฐานเกี่ยวกับ JavaScript/Node.js

2. สิ่งที่ต้องทำก่อน

เปิดใช้ API

ในห้องทดลองนี้ คุณจะใช้ผลิตภัณฑ์/บริการของ Google ต่อไปนี้

  • Google Cloud Functions
  • Pub/Sub ของ Google Cloud
  • Google Cloud Vision API
  • Google Cloud Datastore
  • Gmail API
  • Google Sheets API

Google Cloud Functions

Google Cloud Functions เป็นแพลตฟอร์ม Serverless Functions-as-a-Service ของ Google ที่ช่วยให้คุณเรียกใช้ข้อมูลโค้ดแต่ละรายการ ("ฟังก์ชัน") ได้อย่างง่ายดายและรองรับการปรับขนาด

หากต้องการเปิดใช้ Google Cloud Functions ให้คลิกเมนูแฮมเบอร์เกอร์ที่ด้านบนซ้ายของหน้าจอเพื่อเปิดแถบด้านข้างการนำทางด้านซ้าย

f457988e33594bb6.png

ค้นหา Cloud Functions ในเมนูการนำทาง แล้วคลิกตัวเลือกดังกล่าว คลิกเปิดใช้ API เพื่อเปิดใช้ Google Cloud Functions ในโปรเจ็กต์

Pub/Sub ของ Google Cloud

Google Cloud Pub/Sub เป็นพื้นฐานที่เรียบง่ายและรองรับการปรับขนาดสำหรับการสตรีมข้อมูลและการส่งมอบเหตุการณ์ ใน Lab นี้ ศูนย์จะทำหน้าที่เป็นผู้ให้บริการจัดส่งระหว่าง Gmail และ Google Cloud Functions

หากต้องการเปิดใช้ Google Cloud Pub/Sub ให้เปิดแถบด้านข้างการนำทางด้านซ้าย ค้นหา Pub/Sub แล้วคลิกที่แถบดังกล่าว คลิกเปิดใช้ API เพื่อเปิดใช้ Google Cloud Pub/Sub ในโปรเจ็กต์ของคุณ

Google Cloud Datastore

Google Cloud Datastore เป็นฐานข้อมูลแบบ Serverless ที่สามารถปรับขนาดและกระจายได้

หากต้องการเปิดใช้ Google Cloud Datastore ให้ไปที่ Datastore ที่แถบการนำทางด้านซ้าย แล้วคลิกตัวเลือกนั้น คลิกเลือกโหมด Datastore ในหน้าใหม่

98012c91fd4080d4.png

คุณสามารถใช้ตำแหน่งฐานข้อมูลใดก็ได้สำหรับห้องทดลองนี้ คลิกสร้างฐานข้อมูลเพื่อเปิดใช้ Google Cloud Datastore อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์

Google Cloud Vision

Google Cloud Vision API คือบริการแมชชีนเลิร์นนิงที่มีประสิทธิภาพซึ่งใช้โมเดลก่อนการฝึกเพื่อรับข้อมูลเชิงลึกจากอิมเมจ

ดูวิธีการเปิดใช้ Google Cloud Vision API ได้ที่ด้านล่าง

การเปิดใช้ Gmail API, Google Sheets API และ Google Cloud Vision API

อีกครั้ง ให้เปิดแถบนำทางด้านซ้าย แล้วค้นหา API และ บริการ คลิกคลัง ในการค้นหา API และ Services ให้พิมพ์ Gmail ในผลการค้นหา ให้เลือก Gmail API แล้วคลิกเปิดใช้

กลับไปที่หน้าไลบรารี API ค้นหา Google Sheets API และเปิดใช้

ทำกระบวนการเดิมซ้ำ ค้นหา Cloud Vision API และเปิดใช้งาน

เปิด Google Cloud Shell

ในห้องทดลองนี้ คุณจะใช้ Google Cloud Shell ในการดำเนินการส่วนใหญ่ Cloud Shell มีบรรทัดคำสั่งเพื่อเข้าถึงทรัพยากร Google Cloud Platform ได้จากเบราว์เซอร์โดยตรง ซึ่งจะช่วยให้คุณจัดการทรัพยากรดังกล่าวได้โดยไม่ต้องใช้เครื่องภายใน

หากต้องการเปิด Google Cloud Shell ให้คลิกปุ่มเปิดใช้งาน Cloud Shell ที่แถบแนวนอนสีน้ำเงินด้านบน

fd5c2925ca9cdfdd.png

แผงใหม่จะปรากฏที่ด้านล่างของหน้าจอ

34f498402e910802.png

คลิกปุ่มเปิดตัวแก้ไขโค้ดเพื่อเริ่มต้นเครื่องมือแก้ไขโค้ด Cloud Shell

10f8631ef48bed22.png

ตัวแก้ไขโค้ด Cloud Shell จะเปิดขึ้นในหน้าต่างใหม่

ดาวน์โหลดโค้ด

เรียกใช้คำสั่งด้านล่างเพื่อโคลนโปรเจ็กต์ใน Cloud Shell

git clone https://github.com/googlecodelabs/gcf-gmail-codelab.git

cd gcf-gmail-codelab

คุณควรเห็นโฟลเดอร์ใหม่ gcf-gmail-codelab ปรากฏในตัวแก้ไขโค้ดของ Cloud Shell

3. ภาพรวมทางสถาปัตยกรรม

ขั้นตอนการทํางานของห้องทดลองนี้มีดังนี้

79c5d3e43f674b33.png

  1. ผู้ใช้ตั้งค่าข้อความ Push ของ Gmail กล่าวคือ ทุกครั้งที่ข้อความใหม่มาถึงกล่องจดหมาย Gmail จะส่งการแจ้งเตือนไปยัง Cloud Pub/Sub
  2. Cloud Pub/Sub จะส่งการแจ้งเตือนข้อความใหม่ไปยัง Google Cloud Functions
  3. เมื่อได้รับการแจ้งเตือนข้อความใหม่ อินสแตนซ์ Cloud Functions จะเชื่อมต่อกับ Gmail และเรียกข้อมูลข้อความใหม่
  4. หากอีเมลมีอิมเมจเป็นไฟล์แนบ อินสแตนซ์ Cloud Functions จะเรียกใช้ Cloud Vision API เพื่อวิเคราะห์ไฟล์แนบ
  5. อินสแตนซ์ Cloud Functions จะอัปเดตสเปรดชีตใน Google ชีตที่คุณเลือก โดยระบุบุคคลที่ส่งข้อความและตำแหน่งที่จะดาวน์โหลดไฟล์แนบ

4. ให้สิทธิ์เข้าถึง Gmail

ก่อนที่จะตั้งค่า Cloud Function ให้อ่านอีเมลโดยอัตโนมัติ คุณต้องให้สิทธิ์เข้าถึง Gmail ก่อน คุณจะต้องลงทะเบียนไคลเอ็นต์ OAuth กับ Google และสร้างรหัสไคลเอ็นต์ที่เชื่อมโยง

ลงทะเบียนไคลเอ็นต์ OAuth

ในเมนูการนำทางด้านซ้ายของ Google Cloud Console ให้ค้นหา API และ บริการ คลิกหน้าจอขอความยินยอม OAuth

91b2a3bac30bb2c5.png

พิมพ์ชื่อในช่องชื่อแอปพลิเคชัน เช่น GCF + Gmail Codelab ไม่ต้องสนใจการตั้งค่าอื่นๆ จากนั้นเลื่อนลงมาที่ด้านล่างของหน้า แล้วคลิกบันทึก

สร้างรหัสไคลเอ็นต์ที่เชื่อมโยง

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

จดรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ที่แสดงผลในหน้าต่างป๊อปอัป คุณคลิกชื่อลูกค้าในหน้าเว็บเพื่อดูค่าเหล่านี้อีกครั้งได้

1160d8027ea52d90.png

ดำเนินการให้สิทธิ์

ในโค้ดตัวอย่าง auth/index.js จะระบุ Cloud Functions 2 รายการ คือ auth_init และ auth_callback ที่ทำงานร่วมกันเพื่อดำเนินการกระบวนการให้สิทธิ์ โดยใช้รหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ที่คุณเพิ่งสร้างขึ้น

หากต้องการตรวจสอบโค้ด ให้เปิด auth/index.js ใน Cloud Shell Code Editor

กระบวนการให้สิทธิ์แสดงผลโทเค็น 2 ประเภท ได้แก่ โทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช

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

ซึ่งโดยปกติจะเข้ารหัสและ/หรือจัดเก็บแยกต่างหากจากโทเค็นเพื่อการเข้าถึง

แก้ไข auth/env_vars.yaml ในตัวแก้ไขโค้ด Cloud Shell แทนที่ YOUR-GOOGLE-CLIENT-ID และ YOUR-GOOGLE-CLIENT-SECRET ด้วยค่าของคุณเอง ดูข้อมูลเพิ่มเติมได้ในขั้นตอนก่อนหน้า ยังไม่เปลี่ยนแปลงค่าของ YOUR-GOOGLE-CLIENT-CALLBACK-URL และ YOUR-PUBSUB-TOPIC

a2b4853c39a78bc6.png

หลังจากแก้ไข auth/env_vars.yaml แล้ว ให้เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อทำให้ Cloud Functions ใช้งานได้

cd ~
cd gcf-gmail-codelab/auth

# Deploy Cloud Function auth_init
gcloud functions deploy auth_init --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml

# Deploy Cloud Function auth_callback
gcloud functions deploy auth_callback --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml

การทำให้ Cloud Functions ใช้งานได้อาจใช้เวลา 2-3 นาที ให้สิทธิ์ Cloud SDK ในการติดตั้งคำสั่งเบต้าหากได้รับข้อความแจ้ง

จากนั้นให้ไปที่ Google Cloud Console แล้วคลิก Cloud Functions ในเมนูการนำทางด้านซ้าย คลิก auth_callback ในรายการ Cloud Functions และสลับไปที่แท็บทริกเกอร์

cb094bd341f9b299.png

45678a327c80e0f1.png

คัดลอก URL ในหน้าเว็บ กลับไปที่หน้า Cloud Functions แล้วคลิก auth_init ในรายการ Cloud Functions ในแท็บทั่วไป ให้คลิกแก้ไข คลิกตัวแปรสภาพแวดล้อม เครือข่าย ระยะหมดเวลา และอื่นๆ แล้วแทนที่ค่า GOOGLE_CALLBACK_URL ด้วย URL ที่คุณเพิ่งคัดลอก

939ca3bd38047282.png

คลิกทำให้ใช้งานได้เพื่อใช้การเปลี่ยนแปลง ทำขั้นตอนนี้ซ้ำและอัปเดต auth_callback ด้วย

สุดท้าย ให้เปิดเมนูการนำทางด้านซ้าย แล้วคลิก API และ บริการ > การยืนยันโดเมน หากต้องการเพิ่มโดเมนที่ได้รับอนุญาต ให้คลิกเพิ่มโดเมน ตัวอย่างเช่น หาก URL ที่คุณคัดลอกไว้ก่อนหน้านี้มีลักษณะดังนี้

https://us-central1-my-project.cloudfunctions.net/auth_callback

คุณควรเพิ่มสิ่งต่อไปนี้เป็นโดเมนที่ได้รับอนุญาต

us-central1-my-project.cloudfunctions.net

กดเพิ่มโดเมนเพื่อยืนยัน

4348748f232ceb87.png

กลับไปที่หน้าข้อมูลเข้าสู่ระบบ คลิกชื่อไคลเอ็นต์ OAuth และเพิ่ม URL ที่คุณคัดลอกเป็น URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต กด Enter เพื่อยืนยัน

นำส่วน /auth_callback ออกจาก URL และเพิ่มส่วนที่เหลือเป็นต้นทาง JavaScript ที่ได้รับอนุญาต เช่น หาก URL ของคุณมีลักษณะดังนี้

https://us-central1-my-project.cloudfunctions.net/auth_callback

คุณควรเพิ่มสิ่งต่อไปนี้เป็นต้นทาง

https://us-central1-my-project.cloudfunctions.net/

159bad719432582c.png

กด Enter เพื่อยืนยัน แล้วคลิกบันทึกเพื่อใช้การเปลี่ยนแปลง

5. ตั้งค่าข้อความ Push ของ Gmail

หากกระบวนการให้สิทธิ์สำเร็จ auth_callback จะเรียกใช้ Gmail API โดยอัตโนมัติเพื่อตั้งค่าข้อความ Push

หากต้องการรับข้อความ Push ของ Gmail คุณต้องสร้างหัวข้อ Pub/Sub สมาชิกคนใดก็ตามในหัวข้อจะได้รับการแจ้งเตือนข้อความขาเข้าโดยอัตโนมัติ เมื่อมาจาก Gmail

ในการสร้างหัวข้อ Pub/Sub ให้ไปที่ Google Cloud Console แล้วคลิก Pub/Sub > หัวข้อในเมนูการนำทางด้านซ้าย คลิกสร้างหัวข้อ พิมพ์ชื่อหัวข้อ เช่น gmail-watch แล้วคลิกสร้าง นอกจากนี้ คุณต้องให้สิทธิ์ Gmail ในการส่งข้อความไปยังหัวข้อ Pub/Sub โดยคลิกเมนูตามบริบทของหัวข้อที่คุณเพิ่งสร้างขึ้น (จุดแนวตั้ง 3 จุด) และเลือกสิทธิ์ คลิกเพิ่มสมาชิก ระบุ gmail-api-push@system.gserviceaccount.com เป็นสมาชิกใหม่ และให้บทบาท Pub/Sub > ผู้เผยแพร่ Pub/Sub สุดท้าย ให้คลิกบันทึกเพื่อใช้การเปลี่ยนแปลง

อัปเดต Cloud Function auth_callback เพื่อระบุหัวข้อ Pub/Sub ที่จะใช้ คลิก Cloud Functions ในเมนูการนำทางด้านซ้าย แล้วเลือก auth_callback ในรายการ Cloud Functions ในแท็บทั่วไป ให้คลิกแก้ไข คลิกเพิ่มเติม แล้วแทนที่ค่าของ PUBSUB_TOPIC ด้วยชื่อของหัวข้อ Pub/Sub ที่คุณเพิ่งสร้าง คลิกบันทึกเพื่อใช้การเปลี่ยนแปลง

ตอนนี้คุณพร้อมจะให้สิทธิ์และตั้งค่าข้อความ Push ของ Gmail แล้ว รอจนกว่าการเปลี่ยนแปลงใหม่จะเสร็จสมบูรณ์ จากนั้นกลับไปที่หน้า Cloud Functions เลือก auth_init ในรายการ Cloud Functions แล้วสลับไปที่แท็บทริกเกอร์ คลิก URL แล้วระบบจะเปลี่ยนเส้นทางคุณไปยังหน้าลงชื่อเข้าใช้ด้วย Google

348ab0a7e0c9cd03.png

ลงชื่อเข้าใช้ด้วยบัญชี Gmail ที่คุณเป็นเจ้าของ ข้อความใหม่ที่เข้ามาในกล่องจดหมายของบัญชีจะเรียกใช้ข้อความ Push หลังจากลงชื่อเข้าใช้ คุณจะเห็นหน้าเว็บด้านล่างนี้:

cfdad62fd02de004.png

คลิกอนุญาตเพื่อให้สิทธิ์เข้าถึง auth_callback จะดำเนินขั้นตอนการให้สิทธิ์ให้เสร็จสมบูรณ์ บันทึกโทเค็นเพื่อการเข้าถึง และตั้งค่าข้อความ Push ของ Gmail ให้คุณ คุณควรเห็นข้อความ Successfully set up Gmail push notifications ในเบราว์เซอร์เมื่อกระบวนการนี้เสร็จสิ้น

Codelab นี้ใช้แพ็กเกจ @google-cloud/express-oauth2-handlers เพื่อทำให้เวิร์กโฟลว์การให้สิทธิ์โดยอัตโนมัติสำหรับคุณ ดูข้อมูลเพิ่มเติมได้ที่ที่เก็บของ GitHub

6. ประมวลผลข้อความขาเข้า

ตามที่เราได้กล่าวไว้ก่อนหน้านี้ สมาชิกทุกคนในหัวข้อ Pub/Sub ที่คุณสร้างขึ้นจะได้รับการแจ้งเตือนเมื่อมีข้อความใหม่เข้ามาในกล่องจดหมายของคุณ pubsub/index.js ระบุ Cloud Function ซึ่งก็คือ watchGmailMessages ซึ่งเมื่อนำไปใช้ในฐานะสมาชิกของหัวข้อแล้ว จะอ่านข้อความใหม่ จัดหมวดหมู่รูปภาพที่แนบ และส่งออกหมวดหมู่เหล่านั้นไปยังสเปรดชีตใน Google ชีต

หากต้องการตรวจสอบโค้ด ให้เปิด pubsub/index.js ใน Cloud Shell Code Editor

กำลังเรียกข้อความ

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

// Look up the most recent message.
const listMessagesRes = await gmail.users.messages.list({
  userId: email,
  maxResults: 1
});
const messageId = listMessagesRes.messages[0].id;

// Get the message using the message ID.
const message = await gmail.users.messages.get({
  userId: email,
  id: messageId
});

return message;

วิเคราะห์ไฟล์แนบที่เป็นรูปภาพ

หากข้อความมีไฟล์แนบที่เป็นรูปภาพ watchGmailMessages จะเรียกใช้ Cloud Vision API เพื่อใส่คำอธิบายประกอบในรูปภาพ ใน Codelab นี้ คุณจะขอให้ Cloud Vision API จำแนกประเภทรูปภาพและแสดงผลแท็กรูปภาพจำนวนหนึ่ง เช่น หากมีรูปภาพท้องฟ้าสีคราม Cloud Vision API อาจแสดงผลแท็กเป็น blue, sky และ nature

watchGmailMessages ใช้ไลบรารี Cloud Vision API สำหรับ Node.js เพื่อเรียกใช้ Cloud Vision API ดังนี้

// Tag the attachment using Cloud Vision API
const analyzeAttachment = async (data, filename) => {
  var topLabels = ['', '', ''];
  if (filename.endsWith('.png') || filename.endsWith('.jpg')) {
    const [analysis] = await visionClient.labelDetection({
      image: {
        content: Buffer.from(data, 'base64')
      }
    });
    const labels = analysis.labelAnnotations;
    topLabels = labels.map(x => x.description).slice(0, 3);
  }

  return topLabels;
};

อัปเดต Google ชีต

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

ก่อนอื่นให้สร้างสเปรดชีตใน Google ชีต เปิด Google ชีตแล้วคลิกเทมเพลตว่างในส่วนเริ่มสเปรดชีตใหม่ คัดลอกรหัสของชีต ตัวอย่างเช่น หากที่อยู่ในเบราว์เซอร์มีลักษณะดังนี้

https://docs.google.com/spreadsheets/d/abcdefghij01234567890/edit#gid=0

รหัสสเปรดชีตของคุณคือ abcdefghij01234567890 ใน Cloud Shell Code Editor ให้อัปเดต gcf-gmail-codelab/pubsub/env_vars.yaml แล้วแทนที่ YOUR-GOOGLE-SHEET-ID ด้วยค่าของคุณเอง

watchGmailMessages เชื่อมต่อกับ Google Sheets API เพื่อต่อท้ายข้อมูล

const updateReferenceSheet = async (from, filename, topLabels) => {
  await googleSheets.spreadsheets.values.append({
    spreadsheetId: SHEET,
    range: SHEET_RANGE,
    valueInputOption: 'USER_ENTERED',
    requestBody: {
      range: SHEET_RANGE,
      majorDimension: 'ROWS',
      values: [
        [from, filename].concat(topLabels)
      ]
    }
  });
};

ขั้นตอนสุดท้าย

ในเครื่องมือแก้ไขโค้ด Cloud Shell ให้เปิด gcf-gmail-codelab/pubsub/env_vars.yaml แล้วแทนที่ YOUR-GOOGLE-CLIENT-ID, YOUR-GOOGLE-CLIENT-SECRET และ YOUR-GOOGLE-CALLBACK-URL ด้วยค่าของคุณเอง คุณค้นหาค่าเหล่านี้ได้ใน Google Cloud Console โดยเปิด Cloud Functions ในเมนูการนำทางด้านซ้าย เลือก auth_init ในรายการ Cloud Functions และค้นหาส่วนตัวแปรสภาพแวดล้อม

ปรับใช้โค้ด

เรียกใช้คำสั่งด้านล่างเพื่อทำให้ Cloud Function ใช้งานได้

cd ~

cd gcf-gmail-codelab/pubsub

gcloud functions deploy watchGmailMessages --runtime=nodejs8 --trigger-topic=gmail-watch --env-vars-file=env_vars.yaml

หากคุณตั้งชื่อหัวข้อ Cloud Pub/Sub อย่างอื่นที่ไม่ใช่ gmail-watch ให้แทนที่ gmail-watch ในคำสั่งด้านบนด้วยชื่อหัวข้อ การทำให้ Cloud Function ใช้งานได้อาจใช้เวลา 2-3 วินาที

7. ลองเลย

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