Google Cloud के फ़ंक्शन की मदद से, अपने Gmail इनबॉक्स को सशक्त बनाएं

1. परिचय

अरबों कारोबार और लोग, Gmail और G Suite की अन्य सेवाओं का इस्तेमाल करते हैं. इनसे वे एक-दूसरे से संपर्क करते हैं और डेटा को प्रोसेस करते हैं. Google, G Suite API उपलब्ध कराता है. इनकी मदद से, इन सेवाओं में मौजूद जानकारी को प्रोग्रामैटिक तरीके से ऐक्सेस किया जा सकता है. साथ ही, इन एपीआई का इस्तेमाल करके, रोज़ के वर्कफ़्लो को आसानी से ऑटोमेट किया जा सकता है. इस लैब में, आपको एक ऐसा Gmail एक्सटेंशन बनाना है जो आने वाले ईमेल को अपने-आप कैटगरी में बांट दे. साथ ही, उन कैटगरी को Google शीट में सेव कर दे. यह एक्सटेंशन, G Suite के RESTful API, Google Cloud Functions, और Google Cloud Platform की अन्य सेवाओं का इस्तेमाल करेगा.

आपको क्या बनाना है

इस लैब में, G Suite API और Google Cloud Platform की अन्य सेवाओं से जुड़ी कुछ Cloud Functions बनाई और डिप्लॉय की जाएंगी. इन फ़ंक्शन से:

  • अपने Gmail और Google Sheets के डेटा को सुरक्षित तरीके से ऐक्सेस करने की अनुमति देना
  • आने वाले किसी भी ईमेल से अटैच की गई इमेज एक्सट्रैक्ट करना
  • Cloud Vision API का इस्तेमाल करके, उन इमेज को कैटगरी में बांटना
  • उन कैटगरी, ईमेल भेजने वाले का पता, और अटैचमेंट का नाम Google शीट में लिखें

आपको क्या सीखने को मिलेगा

  • G Suite के RESTful API के बारे में बुनियादी जानकारी
  • Google Cloud Functions और Google Cloud Platform की अन्य सेवाओं के बारे में बुनियादी जानकारी
  • Google Cloud Functions का इस्तेमाल करके, प्रोग्राम के ज़रिए Gmail को ऐक्सेस करने का तरीका

आपको किस चीज़ की ज़रूरत होगी

  • Gmail और Google Sheets का ऐक्सेस वाला Google खाता. अगर आपके पास ऐसा कोई खाता नहीं है, तो यहां जाकर एक खाता बनाएं.
  • JavaScript/Node.js की बुनियादी जानकारी.

2. सबसे पहली बात

एपीआई चालू करना

इस लैब में, Google के इन प्रॉडक्ट/सेवाओं का इस्तेमाल किया जाएगा:

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

Google Cloud Functions

Google Cloud Functions, Google का Serverless Functions-as-a-Service प्लैटफ़ॉर्म है. इसकी मदद से, कोड के अलग-अलग स्निपेट (‘फ़ंक्शन') को आसानी से और ज़रूरत के हिसाब से चलाया जा सकता है.

Google Cloud Functions को चालू करने के लिए, अपनी स्क्रीन पर सबसे ऊपर बाईं ओर मौजूद हैमबर्गर मेन्यू पर क्लिक करें. इससे बाईं ओर मौजूद नेविगेशन साइडबार खुल जाएगा:

f457988e33594bb6.png

नेविगेशन मेन्यू में Cloud Functions ढूंढें और उस पर क्लिक करें. अपने प्रोजेक्ट में Google Cloud Functions को चालू करने के लिए, एपीआई चालू करें पर क्लिक करें.

Google Cloud Pub/Sub

Google Cloud Pub/Sub, डेटा स्ट्रीमिंग और इवेंट डिलीवरी के लिए एक आसान और स्केलेबल प्लैटफ़ॉर्म है. इस लैब में, यह Gmail और Google Cloud Functions के बीच कूरियर के तौर पर काम करता है.

Google Cloud Pub/Sub को चालू करने के लिए, बाईं ओर मौजूद नेविगेशन साइडबार खोलें. इसके बाद, Pub/Sub ढूंढें और उस पर क्लिक करें. अपने प्रोजेक्ट में Google Cloud Pub/Sub को चालू करने के लिए, Enable API पर क्लिक करें.

Google Cloud Datastore

Google Cloud Datastore, बिना सर्वर वाला डेटाबेस है. इसे ज़रूरत के हिसाब से बढ़ाया जा सकता है और यह डिस्ट्रिब्यूटेड होता है.

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 चालू करना

बाईं ओर मौजूद नेविगेशन साइडबार को फिर से खोलें और एपीआई और सेवाएं ढूंढें. लाइब्रेरी पर क्लिक करें. एपीआई और सेवाएं खोजें फ़ील्ड में, Gmail टाइप करें. खोज नतीजों में, Gmail 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 Code Editor शुरू करने के लिए, कोड एडिटर लॉन्च करें बटन पर क्लिक करें:

10f8631ef48bed22.png

Cloud Shell Code Editor एक नई विंडो में खुलेगा.

कोड डाउनलोड करना

प्रोजेक्ट को क्लोन करने के लिए, Cloud Shell में यहां दिया गया निर्देश चलाएं:

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

cd gcf-gmail-codelab

आपको Cloud Shell Code Editor में एक नया फ़ोल्डर, gcf-gmail-codelab दिखेगा.

3. आर्किटेक्चर की खास जानकारी

इस लैब का वर्कफ़्लो यहां दिया गया है:

79c5d3e43f674b33.png

  1. उपयोगकर्ता, 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 का ऐक्सेस देना होगा. आपको Google के साथ एक OAuth क्लाइंट रजिस्टर करना होगा. साथ ही, उससे जुड़ा क्लाइंट आईडी बनाना होगा.

OAuth क्लाइंट रजिस्टर करना

Google Cloud Console के बाएं नेविगेशन मेन्यू में, एपीआई और सेवाएं ढूंढें. OAuth के लिए सहमति वाली स्क्रीन पर क्लिक करें.

91b2a3bac30bb2c5.png

ऐप्लिकेशन का नाम फ़ील्ड में कोई नाम डालें. जैसे, GCF + Gmail Codelab. अन्य सेटिंग में कोई बदलाव न करें. पेज को नीचे की ओर स्क्रोल करें और सेव करें पर क्लिक करें.

जुड़ा हुआ क्लाइंट आईडी बनाना

क्रेडेंशियल टैब पर जाएं. क्रेडेंशियल बनाएं पर क्लिक करें और OAuth क्लाइंट आईडी चुनें. वेब ऐप्लिकेशन टाइप चुनें. इसे कोई नाम दें. यहां GCF + Gmail Codelab का फिर से इस्तेमाल किया जा सकता है. इसके बाद, बनाएं पर क्लिक करें. फ़िलहाल, 'प्रतिबंध' फ़ील्ड को खाली छोड़ दें.

पॉप-अप विंडो में दिखाए गए क्लाइंट आईडी और क्लाइंट सीक्रेट को लिख लें. इन वैल्यू को फिर से देखने के लिए, पेज पर अपने क्लाइंट के नाम पर क्लिक करें:

1160d8027ea52d90.png

अनुमति लेने की प्रोसेस पूरी करना

सैंपल कोड में, auth/index.js दो Cloud Functions, auth_init और auth_callback के बारे में बताता है. ये दोनों फ़ंक्शन, अनुमति देने की प्रोसेस को पूरा करने के लिए एक साथ काम करते हैं. इसके लिए, ये उस क्लाइंट आईडी और क्लाइंट सीक्रेट का इस्तेमाल करते हैं जिसे आपने अभी बनाया है.

कोड की जांच करने के लिए, Cloud Shell Code Editor में auth/index.js खोलें.

पुष्टि करने की प्रोसेस में दो तरह के टोकन मिलते हैं: ऐक्सेस टोकन और रीफ़्रेश टोकन.

  • ऐक्सेस टोकन, पहचान की पुष्टि करने वाले ऐसे सबूत होते हैं जो कम समय के लिए मान्य होते हैं. इनका इस्तेमाल करके, कोई भी व्यक्ति आपके डेटा को ऐक्सेस कर सकता है. auth_callback इन्हें Cloud Datastore में सेव करता है.
  • रिफ़्रेश टोकन का इस्तेमाल, नए ऐक्सेस टोकन पाने के लिए किया जाता है. इनकी समयसीमा काफ़ी लंबी होती है.

आम तौर पर, इन्हें या तो एन्क्रिप्ट (सुरक्षित) किया जाता है और/या ऐक्सेस टोकन से अलग सेव किया जाता है.

Cloud Shell Code Editor में जाकर, auth/env_vars.yaml में बदलाव करें. YOUR-GOOGLE-CLIENT-ID और YOUR-GOOGLE-CLIENT-SECRET को अपनी वैल्यू से बदलें. ज़्यादा जानकारी के लिए, पिछला चरण देखें. फ़िलहाल, YOUR-GOOGLE-CLIENT-CALLBACK-URL और YOUR-PUBSUB-TOPIC की वैल्यू में कोई बदलाव न करें.

a2b4853c39a78bc6.png

auth/env_vars.yaml में बदलाव करने के बाद, Cloud Functions को डिप्लॉय करने के लिए Cloud Shell में यह कमांड चलाएं:

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 को डिप्लॉय होने में कुछ मिनट लग सकते हैं. अगर कहा जाए, तो Cloud SDK को बीटा वर्शन वाली कमांड इंस्टॉल करने की अनुमति दें.

इसके बाद, Google Cloud Console पर जाएं और बाईं ओर मौजूद नेविगेशन मेन्यू में, Cloud Functions पर क्लिक करें. Cloud Functions की सूची में मौजूद auth_callback पर क्लिक करें. इसके बाद, ट्रिगर टैब पर जाएं.

cb094bd341f9b299.png

45678a327c80e0f1.png

पेज पर मौजूद यूआरएल को कॉपी करें. Cloud Functions पेज पर वापस जाएं. इसके बाद, Cloud Functions की सूची में मौजूद auth_init पर क्लिक करें. सामान्य टैब में, बदलाव करें पर क्लिक करें. एनवायरमेंट वैरिएबल, नेटवर्किंग, टाइमआउट वगैरह पर क्लिक करें. इसके बाद, GOOGLE_CALLBACK_URL की वैल्यू को उस यूआरएल से बदलें जिसे आपने अभी कॉपी किया है.

939ca3bd38047282.png

बदलाव लागू करने के लिए, लागू करें पर क्लिक करें. इस प्रोसेस को दोहराएं और auth_callback को भी अपडेट करें.

आखिर में, बाईं ओर मौजूद नेविगेशन मेन्यू खोलें. इसके बाद, एपीआई और सेवाएं > डोमेन की पुष्टि पर क्लिक करें. अनुमति वाला डोमेन जोड़ने के लिए, डोमेन जोड़ें पर क्लिक करें. उदाहरण के लिए, अगर आपने पहले जो यूआरएल कॉपी किया था वह ऐसा दिखता है

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

आपको इन डोमेन को अनुमति वाले डोमेन के तौर पर जोड़ना चाहिए:

us-central1-my-project.cloudfunctions.net

पुष्टि करने के लिए, डोमेन जोड़ें दबाएं.

4348748f232ceb87.png

क्रेडेंशियल पेज पर वापस जाएं. अपने OAuth क्लाइंट के नाम पर क्लिक करें और कॉपी किए गए यूआरएल को अनुमति वाला रीडायरेक्ट यूआरआई के तौर पर जोड़ें. पुष्टि करने के लिए, Enter दबाएं.

यूआरएल से /auth_callback वाला हिस्सा हटाएं और बाकी हिस्से को अधिकृत JavaScript ऑरिजिन के तौर पर जोड़ें. उदाहरण के लिए, अगर आपका यूआरएल ऐसा दिखता है

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

आपको ओरिजन के तौर पर यह जोड़ना चाहिए:

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

159bad719432582c.png

पुष्टि करने के लिए, Enter दबाएं. इसके बाद, बदलाव लागू करने के लिए सेव करें पर क्लिक करें.

5. Gmail के लिए पुश नोटिफ़िकेशन सेट अप करना

अगर पुष्टि करने की प्रोसेस पूरी हो जाती है, तो auth_callback पुश नोटिफ़िकेशन सेट अप करने के लिए, Gmail API को अपने-आप कॉल करेगा.

Gmail की पुश नोटिफ़िकेशन पाने के लिए, आपको Pub/Sub विषय बनाना होगा. विषय के किसी भी सदस्य को, Gmail से मिलने वाले मैसेज की सूचनाएं अपने-आप मिलेंगी.

Pub/Sub विषय बनाने के लिए, Google Cloud Console पर जाएं. इसके बाद, बाईं ओर मौजूद नेविगेशन मेन्यू में Pub/Sub > विषय पर क्लिक करें. विषय बनाएं पर क्लिक करें. विषय का नाम डालें, जैसे कि gmail-watch, और बनाएं पर क्लिक करें. इसके अलावा, आपको Gmail को अपने Pub/Sub विषय पर मैसेज भेजने की अनुमति देनी होगी: अभी बनाए गए विषय के कॉन्टेक्स्ट मेन्यू (तीन वर्टिकल बिंदु) पर क्लिक करें और अनुमतियां चुनें; सदस्य जोड़ें पर क्लिक करें, gmail-api-push@system.gserviceaccount.com को नए सदस्य के तौर पर तय करें, और उसे Pub/Sub > Pub/Sub पब्लिशर की भूमिका दें; आखिर में, बदलाव लागू करने के लिए सेव करें पर क्लिक करें.

Cloud फ़ंक्शन auth_callback को अपडेट करें, ताकि यह तय किया जा सके कि किस Pub/Sub टॉपिक का इस्तेमाल करना है. बाईं ओर मौजूद नेविगेशन मेन्यू में, Cloud Functions पर क्लिक करें. इसके बाद, Cloud Functions की सूची में auth_callback को चुनें. सामान्य टैब में, बदलाव करें पर क्लिक करें. ज़्यादा पर क्लिक करें. इसके बाद, PUBSUB_TOPIC की वैल्यू को उस Pub/Sub विषय के नाम से बदलें जिसे आपने अभी बनाया है. बदलाव लागू करने के लिए, सेव करें पर क्लिक करें.

अब Gmail की पुश नोटिफ़िकेशन को अनुमति दी जा सकती है और उन्हें सेट अप किया जा सकता है. बदलावों के लागू होने तक इंतज़ार करें. इसके बाद, Cloud Functions पेज पर वापस जाएं. Cloud Functions की सूची में जाकर, auth_init को चुनें. इसके बाद, ट्रिगर टैब पर जाएं. यूआरएल पर क्लिक करें. इसके बाद, आपको Google से साइन इन करें पेज पर रीडायरेक्ट कर दिया जाएगा:

348ab0a7e0c9cd03.png

उस Gmail खाते से साइन इन करें जिसका मालिकाना हक आपके पास है. खाते के इनबॉक्स में आने वाले हर नए मैसेज के लिए, पुश नोटिफ़िकेशन ट्रिगर होगा. साइन इन करने के बाद, आपको यह पेज दिखेगा:

cfdad62fd02de004.png

ऐक्सेस करने की अनुमति देने के लिए, अनुमति दें पर क्लिक करें. auth_callback अनुमति देने की प्रोसेस पूरी करेगा, ऐक्सेस टोकन सेव करेगा, और आपके लिए Gmail की पुश नोटिफ़िकेशन सेट अप करेगा. यह प्रोसेस पूरी होने पर, आपको अपने ब्राउज़र में Successfully set up Gmail push notifications मैसेज दिखेगा.

यह कोडलैब, आपके लिए ऑथराइज़ेशन वर्कफ़्लो को अपने-आप पूरा करने के लिए @google-cloud/express-oauth2-handlers पैकेज का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, GitHub पर इसकी रिपॉज़िटरी देखें.

6. आने वाले मैसेज प्रोसेस करना

जैसा कि हमने पहले बताया था, आपके बनाए गए Pub/Sub विषय के सभी सदस्यों को, आपके इनबॉक्स में नए मैसेज आने पर सूचनाएं मिलेंगी. pubsub/index.js एक Cloud फ़ंक्शन watchGmailMessages के बारे में बताता है. यह फ़ंक्शन, विषय के सदस्य के तौर पर डिप्लॉय होने के बाद, नए मैसेज पढ़ेगा, अटैच की गई इमेज को कैटगरी में बांटेगा, और उन कैटगरी को Google शीट में एक्सपोर्ट करेगा.

कोड की जांच करने के लिए, Cloud Shell Code Editor में pubsub/index.js खोलें.

मैसेज वापस लाए जा रहे हैं

Gmail की पुश नोटिफ़िकेशन में, वह ईमेल पता शामिल होता है जिससे नोटिफ़िकेशन जुड़ा है. साथ ही, इसमें इतिहास का आईडी भी शामिल होता है. आसान बनाने के लिए, इस कोडलैब में पुश नोटिफ़िकेशन मिलने पर, Gmail API से सिर्फ़ नया मैसेज माँगा जाएगा. बेहतर नतीजे के लिए, मैसेज देखने के लिए इतिहास के आईडी का इस्तेमाल करें.

// 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 को कॉल करेगा. इस कोडलैब में, Cloud Vision API से इमेज को कैटगरी में बांटने और इमेज टैग की संख्या दिखाने के लिए कहा जाएगा. उदाहरण के लिए, अगर नीले आसमान की इमेज दी जाती है, तो Cloud Vision API, नीला, आसमान, और प्रकृति टैग दिखा सकता है.

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 Sheets में एक्सपोर्ट करता है. इसमें ईमेल भेजने वाले का नाम, अटैचमेंट का नाम, और इमेज अटैचमेंट के टैग (अगर कोई हो) शामिल होते हैं.

सबसे पहले, एक Google शीट बनाएं. Google Sheets खोलें. इसके बाद, नई स्प्रेडशीट शुरू करें में जाकर, खाली टेंप्लेट पर क्लिक करें. अपनी शीट का आईडी कॉपी करें. उदाहरण के लिए, अगर आपके ब्राउज़र में पता ऐसा दिखता है:

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 Code Editor में, gcf-gmail-codelab/pubsub/env_vars.yaml खोलें और YOUR-GOOGLE-CLIENT-ID, YOUR-GOOGLE-CLIENT-SECRET, और YOUR-GOOGLE-CALLBACK-URL की जगह अपनी वैल्यू डालें. आपको ये वैल्यू Google Cloud Console में मिल सकती हैं: बाएं नेविगेशन मेन्यू में Cloud Functions खोलें. इसके बाद, Cloud Functions की सूची में auth_init को चुनें और Environment variables सेक्शन देखें.

कोड डिप्लॉय करना

Cloud फ़ंक्शन को डिप्लॉय करने के लिए, यहां दी गई कमांड चलाएं:

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 फ़ंक्शन को डिप्लॉय होने में कुछ सेकंड लग सकते हैं.

7. इसे आज़माएं

बधाई हो, आपने साइन अप पूरा कर लिया है! खुद को एक ईमेल भेजें. इसमें कोई इमेज अटैच करें. कुछ ही सेकंड में, आपको अपनी बनाई गई Google शीट में, दी गई जानकारी के साथ अपने-आप अपडेट दिखेगा.