تطبيق Slack بسيط لنشر المحتوى من جداول بيانات Google

نحن نحب تجربة أشياء جديدة ، وبالتالي غالبًا ما نشارك الروابط بمعلومات مثيرة للاهتمام من عالم تكنولوجيا المعلومات والبرمجة مع زملائنا. نحن مستخدمون منذ فترة طويلة للكسول ولدينا مثل هذه الروابط قناة تعليمية منفصلة حيث يمكن للجميع العثور على شيء مثير للاهتمام لأنفسهم. ولكن نظرًا لأننا أشخاص عاديون ، فإننا في ذروة العمل بشكل دوري ، فإننا ننسى أننا بحاجة إلى مشاركة هذه الروابط ، ويتلاشى النشاط في القناة ، على الرغم من أن الكثير منا لديه شيء للمشاركة.

لقد واجهنا مهمة مثيرة للاهتمام تتمثل في تطوير "برنامج بوت" يمكن أن يأخذ تلقائيًا معلومات تم جمعها مسبقًا ومشاركة الروابط إليها بشكل منتظم. كنا نبحث عن حل جاهز على الإنترنت ، والآن يبدو أنه تكامل بين zapier و slack .

صورة

ومع ذلك ، لم نجد مثل هذا التكامل من قبل وقررنا كتابة دراجتنا الصغيرة الخاصة. أدناه سنصف كيف فعلنا ذلك بالضبط.

عند التفكير في المشكلة ، جاءني الحل التالي:
كود جافا سكريبت الذي يتلقى معلومات حول الروابط المفيدة ذات الصلة من جدول google ويرسلها إلى Slack. استدعاء برنامج نصي من العنصر الأول في جدول باستخدام cron. لنبدأ بالترتيب.

الحصول على رمز مميز لـ Slack.


كل شيء بسيط هنا وقد تم وصفه مرارًا وتكرارًا في مقالات أخرى ، لذلك سأقدم وصفًا موجزًا ​​فقط.

هناك خياران: إنشاء تطبيق Slack الخاص بك أو استخدام الرموز القديمة ، الخيار الأول أكثر تعقيدًا بعض الشيء ، ولكن ينصح به Slack ، والثاني أكثر بساطة ومناسب تمامًا لاحتياجاتنا ، نظرًا لبساطته سنختاره.

نفتح رابطًا لإنشاء رمز مميز جديد وإنشاء رمز مميز جديد لمساحة العمل المطلوبة (لا تنس نسخه ، يتم إصدار الرمز المميز مرة واحدة).

صورة

في المستقبل ، عند تنفيذ التعليمات البرمجية التي تتفاعل مع Slack API وجداول بيانات Google ، سنتمكن من استخدام هذا الرمز المميز للغرض المقصود.

تحتاج الآن إلى الحصول على الرمز المميز لجداول بيانات Google. أولاً ، افتح Node.js Quickstart لجداول بيانات Googleوتمكين واجهة برمجة تطبيقات جداول بيانات Google. ثم نقوم بنسخ كود index.js من المثال ونقوم بتنفيذه ، ثم نذهب من خلال عملية التفويض ونحصل على بيانات الاعتماد في الملف ، وهي مفيدة للاستخدام مع برنامجنا النصي.

تنفيذ البرنامج النصي


حان الوقت الآن لبدء تطوير برنامج نصي لنشر الرسائل من جداول بيانات Google إلى Slack. يمكن العثور على كود البرنامج النصي الكامل بالنقر على الرابط .

بادئ ذي بدء ، سنقوم بتحليل جزء من التعليمات البرمجية التي ترسل الرسائل إلى قناة الركود.
يحدث هذا عن طريق الاتصال بـ Slack REST API.

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 Quickstart ، لن نتناولها بالتفصيل.

الكتلة التالية المثيرة للاهتمام من التعليمات البرمجية هي الحصول على معلومات لإرسالها من جداول بيانات 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.');
    }
  });
};

يحتوي الجدول الذي يتفاعل معه النص البرمجي على الشكل التالي:

صورة

وفقًا لذلك ، بجوار كل رابط بعد إرسال رسالة إلى Slack ، يضع البرنامج النصي "x". وبالتالي ، للعثور على الرسالة التي تريد إرسالها ، يجب عليك تحديد السطر الأول ، الذي لا يحتوي بعد على "x" ، وأخذ الرسالة وإرسالها ووضع علامة على السطر المحدد.

البرنامج النصي الذي قمنا بفكّه للتو بسيط للغاية وأكد أداءه لعدة سنوات في فريقنا. علينا فقط نشر هذا البرنامج النصي على الخادم والاستمتاع باستخدامه.

لهذا ، في شركتنا نستخدم Ubuntu VPS المعتاد على المحيط الرقمي (حتى أكثرها طاقة منخفضة).

بادئ ذي بدء ، تحتاج إلى تكوين البيئة لتنفيذ كود جافا سكريبت ، لذلك تحتاج إلى تثبيت node.js (دليل التثبيت )

بعد ذلك ، قم بتكوين مهمة cron لاستدعاء البرنامج النصي وفقًا لجدول زمني:

crontab -e

#### 

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

باستخدام هذه الإعدادات ، سيتم استدعاء برنامجنا النصي من المجلد / root / يوميًا من الاثنين إلى الجمعة الساعة 14:24.

انتهى الإعداد ، ولكن لا بد أن القارئ اليقظ لاحظ بعض العيوب في النص ، على سبيل المثال ، إذا كان هناك أي خطأ عند استدعاء البرنامج النصي ، فلن نعرف عنه أبدًا ، لأنه "سيقع بهدوء" وهذا كل شيء. لحل هذه المشكلة ، يمكنك إضافة معالجة الخطأ وإخراج نتيجة استدعاء البرنامج النصي إلى جدول بيانات Google أو ملف السجل نفسه.

أيضًا ، بدلاً من إرسال رسالة في وقت محدد ، يمكنك إرسالها بتأخير عشوائي ، بحيث تكون رسالتنا أشبه برسالة من مستخدم "مباشر".

فكرة أخرى مثيرة للاهتمام من أحد زملائنا هي إنشاء جدول ثانٍ ، يتم من خلاله إرسال الرسائل حصريًا يوم الجمعة وسيكون أكثر متعة.

بشكل عام ، نرى عددًا لا يحصى من الأفكار للتحسين وسنقوم بتنفيذها تدريجيًا ، ولكن في الشكل الحالي ، خرج هذا النص القابل للاستخدام تمامًا.

جدول مثال يمكن استخدامه متاح هنا .

شكرا للقراءة والاستمتاع باستخدام.

All Articles