Google शीट से प्रकाशन सामग्री के लिए सरल स्लैक ऐप

हम नई चीजों की कोशिश करना पसंद करते हैं, और इसलिए अक्सर आईटी की दुनिया से दिलचस्प जानकारी के लिए लिंक साझा करते हैं और अपने सहयोगियों के साथ प्रोग्रामिंग करते हैं। हम लंबे समय तक सुस्त रहने वाले उपयोगकर्ता हैं और इस तरह के लिंक के लिए हमारे पास एक अलग शैक्षिक चैनल है जहां हर कोई अपने लिए कुछ दिलचस्प पा सकता है। लेकिन जब से हम आम लोग हैं, समय-समय पर काम की गर्मी में हम भूल जाते हैं कि हमें इन लिंक को साझा करने की आवश्यकता है, और चैनल में गतिविधि फीकी पड़ती है, हालांकि हम में से कई के पास साझा करने के लिए कुछ है।

हमें एक "बॉट" विकसित करने के एक दिलचस्प कार्य का सामना करना पड़ा जो स्वचालित रूप से पूर्व-एकत्रित जानकारी ले सकता है और नियमित आधार पर लिंक साझा कर सकता है। हम इंटरनेट पर तैयार समाधान की तलाश कर रहे थे, और अब यह जैपियर और स्लैक के एकीकरण के रूप में प्रकट हुआ है

छवि

हालांकि, हमें पहले ऐसा एकीकरण नहीं मिला और हमने अपनी छोटी साइकिल लिखने का फैसला किया। नीचे हम बताएंगे कि हमने वास्तव में यह कैसे किया।

समस्या के बारे में सोचते समय, निम्नलिखित समाधान मेरे दिमाग में आया:
जावास्क्रिप्ट कोड जो Google तालिका से प्रासंगिक उपयोगी लिंक के बारे में जानकारी प्राप्त करता है और इसे स्लैक को भेजता है। क्रोन का उपयोग करके शेड्यूल पर पहले आइटम से स्क्रिप्ट को कॉल करना। चलिए शुरू करते हैं।

स्लैक के लिए टोकन प्राप्त करना।


यहां सब कुछ सरल है और इसे अन्य लेखों में बार-बार वर्णित किया गया है, इसलिए मैं केवल एक संक्षिप्त विवरण दूंगा।

दो विकल्प हैं: अपना स्वयं का स्लैक एप्लिकेशन बनाएं या लीगेसी टोकन का उपयोग करें, पहला विकल्प थोड़ा अधिक जटिल है, लेकिन यह स्लैक द्वारा अनुशंसित है, दूसरा सरल और हमारी आवश्यकताओं के लिए काफी उपयुक्त है, इसकी सादगी के कारण हम इसे चुनेंगे।

हम एक नया टोकन बनाने के लिए एक लिंक खोलते हैं और वांछित कार्यक्षेत्र के लिए एक नया टोकन बनाते हैं (इसे कॉपी करना न भूलें, टोकन एक बार जारी किया जाता है)।

छवि

भविष्य में, स्लैक एपीआई और गूगल शीट्स के साथ बातचीत करने वाले कोड को लागू करते समय, हम इस टोकन का उपयोग अपने इच्छित उद्देश्य के लिए कर पाएंगे।

अब आपको Google शीट के लिए टोकन प्राप्त करने की आवश्यकता है। सबसे पहले, Google शीट के लिए Node.js क्विकस्टार्ट खोलेंऔर Google पत्रक API सक्षम करें। फिर हम उदाहरण से कोड index.js को कॉपी करते हैं और इसे निष्पादित करते हैं, प्राधिकरण प्रक्रिया के माध्यम से जाते हैं और फ़ाइल में क्रेडेंशियल्स प्राप्त करते हैं, जो हमारी स्क्रिप्ट के साथ उपयोग के लिए उपयोगी हैं।

स्क्रिप्ट कार्यान्वयन


अब Google शीट्स से स्लैक तक संदेश प्रकाशित करने के लिए एक स्क्रिप्ट विकसित करना शुरू करने का समय है। लिंक पर क्लिक करके पूरा स्क्रिप्ट कोड पाया जा सकता है

सबसे पहले, हम उस कोड के हिस्से का विश्लेषण करेंगे जो संदेश को सुस्त चैनल पर भेजता है।
यह स्लैक रेस्ट एपीआई को कॉल करके होता है।

const post = async (text, channel = <CHANNEL ID>) => {
  const uri = `https://slack.com/api/chat.postMessage?token=${SLACK_AUTH_TOKEN}&channel=${channel}&text=${text}`;
  const result = await fetch(encodeURI(uri), {
    headers: {
      'Content-Type': 'application/json',
    },
    method: 'POST',
    body: JSON.stringify({
      channel,
      text,
      as_user: true
    })
  });

  await result.json();
};

Google API में प्राधिकरण के लिए, दो फ़ंक्शन का उपयोग किया जाता है (अधिकृत करें, getNewToken), जिनमें से कोड Node.js क्विकार्टार्ट से लिया गया है, हम उन पर विस्तार से ध्यान नहीं देंगे।

अगले दिलचस्प ब्लॉक को Google स्प्रेडशीट से भेजने की जानकारी मिल रही है, यह निम्नलिखित फ़ंक्शन का उपयोग करके किया जाता है:

const getMessageAndPost = async (auth, spreadsheetId = <ID  Google >) => {
  const sheets = google.sheets({ version: 'v4', auth });
  sheets.spreadsheets.values.get({
    spreadsheetId,
    range: 'Sheet1!A1:B999',
  }, async (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
    const rows = res.data.values;
    if (rows.length) {
      // Print columns A and E, which correspond to indices 0 and 4.
      const ix = rows.findIndex(r => !r[1]);
      await post(rows[ix][0]);
      sheets.spreadsheets.values.update({
        spreadsheetId: '18VzilQTEDGXBnaH1f_k-uAfa8Mb470gx32Phir6xQT4',
        range: `Sheet1!B${ix + 1}`,
        valueInputOption: 'RAW',
        requestBody: {
          range: `Sheet1!B${ix + 1}`,
          values: [['x']]
        }

      })
    } else {
      console.log('No data found.');
    }
  });
};

वह तालिका जिसके साथ स्क्रिप्ट इंटरैक्ट करती है, उसका निम्न रूप होता है:

छवि

तदनुसार, स्लैक को संदेश भेजने के बाद प्रत्येक लिंक के बगल में, स्क्रिप्ट "x" डालती है। इस प्रकार, आप जो संदेश भेजना चाहते हैं, उसे खोजने के लिए, आपको पहली पंक्ति का चयन करना चाहिए, जिसमें अभी तक "x" नहीं है, संदेश लें, इसे भेजें और चयनित पंक्ति को चिह्नित करें।

जिस स्क्रिप्ट को हमने असंतुष्ट किया है वह काफी सरल है और हमारी टीम में कई वर्षों से इसके प्रदर्शन की पुष्टि की है। हमें बस इस स्क्रिप्ट को सर्वर पर तैनात करना है और इसका उपयोग करने का आनंद लेना है।

इसके लिए, हमारी कंपनी में हम डिजिटल ओशन पर सामान्य उबंटू वीपीएस का उपयोग करते हैं (यहां तक ​​कि सबसे कम-शक्ति वाले एक करेंगे)।

सबसे पहले, आपको जावास्क्रिप्ट कोड निष्पादित करने के लिए पर्यावरण को कॉन्फ़िगर करने की आवश्यकता है, इसके लिए आपको नोड स्थापित करने की आवश्यकता है। js (स्थापना गाइड )

उसके बाद, स्क्रिप्ट को शेड्यूल पर कॉल करने के लिए क्रोन कार्य को कॉन्फ़िगर करें:

crontab -e

#### 

24 14 * * 1-5 cd /root/google-sheets-to-slack && node post.js

इन सेटिंग्स का उपयोग करते हुए, हमारी स्क्रिप्ट / रूट / फोल्डर से प्रतिदिन सोमवार से शुक्रवार तक 14:24 बजे बुलाया जाएगा।

सेटअप खत्म हो गया है, लेकिन चौकस पाठक ने स्क्रिप्ट में कुछ खामियों को देखा होगा, उदाहरण के लिए, यदि स्क्रिप्ट को कॉल करते समय कोई त्रुटि है, तो हम इसके बारे में कभी नहीं जान पाएंगे, क्योंकि यह "चुपचाप गिर जाएगा" और वह सब है। इस समस्या को हल करने के लिए, आप उसी Google स्प्रेडशीट या लॉग फ़ाइल में स्क्रिप्ट कॉल के परिणाम की त्रुटि हैंडलिंग और आउटपुट जोड़ सकते हैं।

इसके अलावा, एक निश्चित समय पर एक संदेश भेजने के बजाय, आप इसे एक यादृच्छिक देरी के साथ भेज सकते हैं, ताकि हमारा संदेश "लाइव" उपयोगकर्ता के संदेश की तरह अधिक हो।

हमारे सहयोगियों में से एक और दिलचस्प विचार एक दूसरी तालिका बनाना था जिसमें से संदेश विशेष रूप से शुक्रवार को भेजे जाएंगे और अधिक मनोरंजक होंगे।

सामान्य तौर पर, हम शोधन के लिए अनगिनत विचारों को देखते हैं और हम धीरे-धीरे उन्हें लागू करेंगे, लेकिन मौजूदा रूप में यह स्क्रिप्ट काफी उपयोगी है।

एक उदाहरण तालिका जिसका उपयोग किया जा सकता है, यहां उपलब्ध है

पढ़ने के लिए धन्यवाद और उपयोग करने का आनंद लें।

All Articles