ابحث في المدونة

الخميس، 26 يناير 2023

الربط الذكي بين خدمة الاستبيانات الالكترونية وجهات الاتصال في Google من خلال المشاريع البرمجية

 

 

تشتهر خدمة Google Forms كواحدة من أكثر الخدمات انتشارًا حينما يتعلق الأمر بإنشاء النماذج الالكترونية. قد يعود ذلك إلى اجتياح Google للتطبيقات الخدمية على الإنترنت, أو ربما سهولة الخدمة ... أو أن هناك أسباب أخرى تدعو الغالبية العظمى من المستخدمين للجوء إلى Google Forms وسط الخيارات المجانية الأخرى.

مع ذلك, قد لا تكون استفادة هأولاء المستخدمين من Google forms بذلك القدر الذي تتيحه الخدمة من مميزات متقدمة؛ والتي من شأنها إضفاء تجربة من عالم آخر على صعيد تسهيل العمل وأتمتته.

مقالي هذا سيشرح لقرائه الأعزاء الطريقة التي يمكن من خلالها ربط استبانتك في Google Forms بخدمة إدارة جهات الاتصال من Google والمرتبطة بحسابك الشخصي.

 

 

قائمة المحتويات.

1.     ماهية الربط؟

2.     فكرة العمل.

3.     إعداد الاستبيان.

4.     ربط النموذج بجدول بيانات.

5.     نظرة على جدول البيانات.

6.     إنشاء المشروع البرمجي.

7.     كتابة الكود.

8.     تفويض الكود.

9.     ربط الكود بحدث التسليم.

10.  خاتمة.

 

 

ماهية الربط؟

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

بطبيعة الحال, سيقوم Google Forms بدور جمع هذه البيانات بشكل تلقائي, وستقوم أنت كمستخدم تقليدي للخدمة بالمرور على هذه البيانات وتسجيل جهات اتصال هأولاء المتدربين بشكل يدوي.

ماذا لو أخبرتك أن بوسعك ربط نموذجك هذا بخدمة جهات اتصال Google بحيث يتم الاحتفاظ ببيانات التواصل مع جميع المسجلين بشكل تلقائي فور وصول مسجل جديد من النموذج؟

هذا ما ستخبرك عنه أسطر المقال بمشيئة الله تعالى.

 

 

فكرة العمل.

لكي تكون في الصورة, سيعتمد عملنا في هذا المقال على ما يسمى بمشاريع Google البرمجية, حيث سننشئ نموذجًا اعتياديًا بالحقول التي نحتاجها, بعدها سنربط هذا النموذج بمشروع برمجي بسيط لمعالجة استجابات المستخدمين فور وصولها.

إن مشاريع Google البرمجية ما هي إلا إحدى الخدمات التي توفرها Google لربط تطبيقاتها الأخرى ببعضها من خلال كتابة تعليمات برمجية مكتوبة بنسخة مطوعة من لغة javascript الشهيرة., والفكرة العامة من وجودها هي إيجاد طريقة لخلق انسجام بين تطبيقات Google الأخرى وفقًا لتطلعات المستخدم واحتياجاته, أي أن تتاح الفرصة للمستخدم بأن ينشئ تطبيقاته الخاصة من خلال جمع تطبيقات Google الموجودة بالفعل.

العملية تتطلب شيئًا من المعرفة البرمجية, لكني سأحاول التبسيط قدر المستطاع بإذنه تعالى.

 

 

إعداد الاستبيان.

يمكن ببساطة إنشاء استبيانات google بالدخول إلى الخدمة من هذا الرابط وتسجيل الدخول إلى حسابك في google إن لم تكن قد فعلت ذلك مسبقًا, بعد ذلك ستضغط على الزر الخاص بالإنشاء لتوليد استبيان فارغ جديد.

بعد أن يتم فتح المحرر الخاص بإعداد الاستبيان؛ قم بوضع عنوانًا للاستبيان ووصفًا له في الحقول المخصصة لذلك, وابدأ بإضافة الأسئلة والأقسام بما يتناسب مع احتياجاتك.

ولغرض الشرح والتوضيح, سأضع أسئلةٌ ثلاث لنموذجنا التجريبي, أولها لكتابة الاسم, والثاني للبريد الالكتروني, والثالث لرقم الهاتف.

لكم بالطبع حرية وضع الحقول حسب ما يتطلبه الهدف من إنشاء الاستبيان.

 

 

ربط النموذج بجدول بيانات.

انتهينا من وضع بنود الاستبيان وتوزيعها بالشكل الذي من المفترض أن يلائم ذائقة مستخدميه ومستوياتهم التقنية. في الخطوة التالية سنقوم بضبط الاستبيان ليقوم بإرسال استجابات المستخدمين إلى جدول بيانات جديد على خدمة Google Spreadsheets استعدادًا لربطها مع مشاريع google البرمجية.

تتبع الخطوات التالية بدقة للقيام بذلك:

1.     من محرر الاستبيان؛ ستتجه إلى منطقة التبويبات ثم تقوم باختيار تبويبة الردود.

2.     بعد ذلك ستضغط على زر باسم ( إرسال النموذج إلى جدول بيانات جديد ) والذي بدوره سيقوم بإنشاء ورقة جديدة على خدمة google spreadsheets  لتخزين الاستجابات على شكل جدول منظم.

3.     بعد الضغط على الزر المذكور أعلاه ستنبثق لديك نافذة بسيطة لتحديد اسم الجدول ومكان تخزينه, اضغط على إنشاء للمتابعة بالإعدادات الافتراضية.

 

نظرة على جدول البيانات.

 

قد يسأل أحدكم ويقول, ما الفائدة من إنشاء جدول البيانات في حين أنه من المفترض أن تتم عملية الربط بين النموذج والمشروع البرمجي؟

جوابًا على تساؤلكم نقول, إن مبدأ عمل خدمة Google Forms تعتمد على تخزين الاستجابات التي يستقبلها في جدول البيانات هذا, وفي الحقيقة فإن أي عملية ربط بالمشاريع البرمجية إنما يتم تطبيقها على جدول البيانات وليس على المشروع بشكل مباشر, ذلك لأننا نحن بصدد التعامل مع البيانات التي تُختزن بالأصل في الجدول وليس في مكان آخر.

هذا سؤالكم وأجبنا عليه, دعونا الآن ننتبه قليلًا إلى محتوى الجدول الظاهر أمامنا ونعيه جيدًا.

من الواضح أن الجدول يشبه إلى حد كبير جداول excel الشهيرة.

الحقيقة, الأمر كذلك بالفعل, فجداول Google Spreadsheets هي البديل المجاني من Google لتطبيق مايكروسوفت العريق Microsoft office excel.

ليس هذا ما وددت أن ألفت نظرك إليه, وإنما أريدك أن تنتبه جيدًا للصف العلوي من الجدول.

كما ستلاحظ أن هذا الصف يحمل في ثناياه عناوين الأسئلة التي قد سبق وضعها في الاستبيان وفقًا للترتيب الذي وضعناها هنالك.

تبدأ أول خلية من الصف بالوقت الذي تم فيه استلام كل استجابة من الاستجابات, يليها نص السؤال الأول, وما بعدهما السؤال الذي يليه وهكذا.

انتبه جيدًا إلى ترتيب الأسئلة هذا لأنك ستحتاج إليه أثناء كتابة التعليمات البرمجية لمشروعك.

 

 

إنشاء المشروع البرمجي.

أما إنه وقد حان الوقت لإنشاء المشروع البرمجي المسؤول عن معالجة الاستجابات, فدونكم هذه الخطوات التي سترشدكم إلى طريقة القيام بذلك.

1.     انتقل إلى شريط القوائم بالضغط على alt + f أو من خلال مؤشر الفأرة.

2.     توجه إلى قائمة الإضافات, واختر منها العنصر المسمى ب (برمجة التطبيقات).

3.     لمستخدمي قارئ الشاشة, عملية التنقل بين القوائم تتم عبر السهمين الأفقيين (يمين/ يسار), أما التنقل بين ثنايا القائمة المحددة فهو يتم عبر السهمين الرأسيين (أعلى / أسفل).

 

 

كتابة الكود.

هنا عزيزي القارئ, وبمجرد الضغط على خيار مشاريع Google البرمجية, أنت أمام أفق واسع من الإمكانات والأفكار التي يمكنك تطبيقها على خدمات Google, لا يحد ذلك إلا معرفتك الجيدة بالبرمجة ومدى بعد أفكارك.

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

دعونا الآن نفكر في مسار المشروع الذي نحن بصدد بناؤه.

المطلوب من مشروعنا أن يؤدي التالي:

1.     ينتظر استجابة جديدة من مستخدمي الاستبيان الالكتروني.

2.     يقرأ القيم التي تم إدخالها من قبل المستخدم.

3.     يستخرج كلًا من الاسم, رقم الهاتف, والبريد الالكتروني من القيم المدخلة.

4.     ينشئ جهة اتصال جديدة ممررًا القيم التي تم استخراجها.

 

ما رأيكم أن نترجم الخطوات السابقة بلغة javascript? احذف ما هو موجود في المحرر واكتب التعليمات التالية, ولا تقلق إن لم تفهم منها شيئًا في هذه المرحلة.

 

 

function onSubmit(e) {

let name = e.values[1]

let email = e.values[2]

let phone = e.values[3]

let contact = ContactsApp.createContact(name""email)

contact.addPhone(ContactsApp.Field.MOBILE_PHONEphone)

 

}

 

لعلك لاحظت أنها مجرد تعليمات بسيطة لا تتجاوز 7 أسطر, ولكن لا بأس من شرحها.

 

function onSubmit(e) {

في هذا السطر قمنا بتعريف وظيفة جديدة أسميناها onSubmit, هذه الوظيفة من المفترض أن تُربط بعد ذلك بمهمة إرسال النموذج, وفيها يتم تنفيذ جميع الأوامر الخاصة بالمشروع.

تكونت الجملة السابقة من الآتي:

·       Function وهي كلمة دلالية تعني إنشاء وظيفة جديدة.

·       onSubmit وهو اسم الوظيفة.

·       (e) هي المعاملات التي ستحتاجها الوظيفة لكي تعمل, وهنا نحتاج إلى معامل واحد أشرنا إليه بالاسم e وهو لاستقبال إجابات المستخدم.

·       { هذا القوس يعني بداية الأوامر الخاصة بوظيفة onSubmit

 

 

let name = e.values[1]

let email = e.values[2]

let phone = e.values[3]

الأسطر السابقة هي المسؤولة عن تنفيذ الخطوة الثالثة من خطوات المشروع, وهي استخراج القيم.

لاحظ أن كل سطر منها بدأ بكلمة let كدلالة على تعريف متغير جديد لتخزين قيمة معينة

بعد ذلك وضعنا اسمًا مميزًا لكل قيمة, فاخترنا name لتخزين اسم المستخدم, و email لبريده الالكتروني, و phone لرقم الهاتف.

لكم أن تختاروا المسميات التي تريحكم على أن تكون مكتوبة باللغة الإنجليزية, وأن لا تحتوي على علامات عدا الشرطة السفلية (_)., وبطبيعة الحال هذه التسميات سنستخدمها فقط في الكود عند الحاجة إلى استدعاء القيم التي بداخلها.

يلي ذلك علامة المساواة, وهي لفصل طرفي الأمر البرمجي إلى متغير وقيمة.

القيمة هنا ستُؤخذ من إجابات المستخدم, والتي قد سبق تخزينها في المتغير e كما أشرنا.

إن المتغير e ما هو إلا كائنًا يحتوي على مجموعة بيانات تخص إجابة المستخدم, من هذه البيانات قائمة تسمى values وفيها نجد كل استجابات المستخدم مرتبة حسب وجودها في الجدول.

وهنا تذكر ترتيب الأسئلة التي وجدتها في الجدول, ولعلك تعلم أن أول خلية قد تم احتجازها لتاريخ ووقت استقبال الإجابة, أي لا حاجة لنا بذلك.

أما الخلية الثانية فهي للاسم حسب المثال الذي اتفقنا عليه منذ البداية.

والخليتين التاليتين فهما للبريد الالكتروني ورقم الهاتف بالترتيب.

تهمنا جدًا مسألة الترتيب هذه, فمن خلالها يتم أخذ القيم من إجابة المستخدم بدقة.

لو أشكل عليك فهم فكرة الأسطر الثلاث, فدعني أخبرك بأنك لست في حاجة إلا بتغيير الرقم الموجود بين الأقواس لكل قيمة بحيث يوافق ترتيب السؤال في الاستبيان لديك.

فلو قلنا أن رقم الهاتف لديك في الاستبيان هو السؤال الثاني, فستقوم باستبدال الرقم الخاص بمتغير الرقم ليكون 2 بدلًا من 3, وتغيير الرقم الخاص بحقل البريد الالكتروني ليكون 3.

وضع في الاعتبار أنه بالإمكان إنشاء جهة اتصال دون بريد الالكتروني, وذلك بمجرد حذف السطر الخاص باستخراج البريد الالكتروني, وحذف المتغير email من السطر الذي يليه.

 

 

let contact = ContactsApp.createContact(name""email)

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

لدينا في القيمة الأولى إشارة للمتغير name, والتي ستُستبدل بالقيمة التي سيدخلها المستخدم.

القيمة الثانية وضعناها فارغة, وهي لكتابة اسم للعائلة.

أما القيمة الثالثة فهي للبريد الالكتروني, ولك أن تحذفها إن لم تكن في حاجة إليها.

 

contact.addPhone(ContactsApp.Field.MOBILE_PHONEphone)

 

لأن أمر إنشائ جهة اتصال جديدة لا يطلب بشكل افتراضي قيمة لرقم الهاتف؛ وضعنا هذا الأمر لإضافة الرقم بشكل يدوي.

وهنا انتبه للقيمة الأخيرة قبل إغلاق القوس, حيث أنها إشارة للمتغير الذي تم فيه اختزان رقم الهاتف المأخوذ من المستخدم, انتبه بضرورة كتابة اسم المتغير بالضبط كما قمت بتعريفه في الأعلى.

 

 

هذا كل ما في الكود, ولا ننسى إغلاق القوس المتعرج كدلالة على نهاية تعريف الوظيفة onSubmit.

 

تفويض الكود.

لتعلم عزيزي القارئ أنه باعتبار أن هذه المشاريع لها ارتباط مباشر بجميع خدمات google فإنه من الضروري إعارة مسألة الأمان جزءً من الاهتمام. والحقيقة فإن google تقوم بهذا الأمر عوضًا عنك؛ فلا يمكن لهذا المشروع أن يعمل دون أن يتم توثيقه أولًا مع حساب المنشئ على gmail>

لفعل ذلك؛ ستقوم أولًأ بحفظ الكود وذلك بالضغط على control + s ثم تنتقل بعدها إلى الزر المسمى بتشغيل الدالة المحددة وتضغط عليه هو الآخر, ثم تنتظر لبضع ثواني لتظهر لديك النافذة الخاصة بالتوثيق.

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

في الصفحة التالية؛ ستخبرك google بأنه لم يتم التحقق من هوية هذا التطبيق, اضغط على الخيارات المتقدمة ليظهر لك رابطًا باسم الانتقال إلى مشروع بلا عنوان لتضغط عليه هو الآخر, ثم تضغط بعدها على سماح ليتم التفويض.

 

ربط الكود بحدث التسليم.

بالشكل الحالي للمشروع؛ من المفترض أنه لن يعمل الكود الذي قمنا بكتابته إلا بعد أن نقوم بتشغيله يدويًا من محرر المشروع.

ما نريده نحن هو أن نجعل مسألة تنفيذ الكود مرتبطة باللحظة التي يقوم فيها أي مستخدم للاستبيان بالضغط على الزر المسؤول عن تسليم إجاباته.

ما الحل إذًا؟ تابعوا معي.

1.     من محرر الأكواد؛ توجه إلى تبويبة العوامل المشغلة.

2.     إضغط على إضافة مشغل لتسجيل دالة الإرسال.

3.     الآن, اختر اسم الدالة والتي اتفقنا على أن نسميها onSubmit, اخترها من الصندوق المخصص لتحديد الدوال.

4.     من قائمة نوع الحدث؛ حدد على حدث الإرسال.

5.     اختياريًا, يمكنك ضبط الفترات الزمنية التي ترغب فيها استلام أية أخطاء برمجية من google إن وجدت, من باب الاحتياط سأضبط الخيار على الإرسال الفوري.

6.     اضغط على حفظ لإكمال العملية.

7.     في بعض الأحيان, قد يُطلب منك إعادة تفويض المشروع أمنيًا على حسابك, تتبع نفس الخطوات الموضحة في قسم تفويض الكود.

 

خاتمة.

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

وأخيرًا, أشكر لك وصولك لهذه النقطة من المقال, والسلام أطيب ما يحلو به الختام.

 

هناك 3 تعليقات:

  1. شكرا لك سليمان، مقال رائع.

    ردحذف
  2. ‏هيثم الاحمد26 يناير 2023 في 10:20 م

    ‏بارك الله بك أستاذ سليمان دائما متألق جزاك الله كل خير

    ردحذف
  3. السلام عليكم لو سمحتم ما هي الطريقة التي تم بها تحزيم برنامج googleTextToSpeech.exe وجعله في ملف واحد

    ردحذف

قل شيئًا