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

السبت، 28 مايو 2022

طريقة إرسال رسائل بريدية آلية مخصصة وفقًا لاستجابات المستخدمين في نماذج Google من خلال مشاريع Google البرمجية

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

 

متطلبات العمل.

من أجل تطبيق فكرة ربط البريد الآلي بالاستبيانات الالكترونية؛ سنحتاج إلى جملة من المتطلبات نذكرها فيما يلي:

1. إعداد استبيان جديد في خدمة google forms مجهزًا بالحقول الخاصة بإدخال الاسم والبريد الالكتروني للمستجيب, وقد سبق شرح مبادئ التعامل مع الخدمة في هذا المقال.

2. توجيه ردود الاستبيان إلى جدول بيانات جديد.

3. ربط جدول البيانات بمشروع google script جديد.

4. كتابة الكود الذي يفترض أن يُنفذ في كل عملية تسليم للاستبيان.

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

 

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

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

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

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

بهدف التوضيح والشرح, سأفترض أنني وضعت 3 أسئلة في الاستبيان, الأول لكتابة الاسم, والثاني للبريد الالكتروني, والثالث سؤال متعدد الخيارات يتيح للمستخدم حرية تحديد الشعبة التي يرغب بالاشتراك فيها.

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

 

توجيه الردود إلى جدول بيانات جديد.

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

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

 

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

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

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

 

ربط جدول البيانات بمشروع Google برمجي جديد.

قبل الإكمال, تأمل معي جدول البيانات الذي أمامك.

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

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

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

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

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

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

حسنًا, نعود الآن إلى موضوعنا.

المطلوب منك الآن هو إنشاؤ مشروع google apps script جديد يكون مربوطًا بجدول البيانات الذي هو بدوره مربوطًا بالاستبيان, وذلك وفقًا للخطوات التالية:

 

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

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

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

 

كتابة الكود.

ما هذا يا سليمان, برمجة مرة أخرى؟

صبركم علي, ستتضح الأمور كلها بمشيئة الله تعالى.

أنت الآن بصدد كتابة كود برمجي لتنفيذ جملة من المهام المتسلسلة والمتمثلة في التالي:

1. استقبال استجابة المستخدم بعد أن ضغط على الزر المسؤول عن تسليم الاستبيان.

2. استخراج قيم الإجابات من النموذج المستلم.

3. عمليات منطقية على إجابات المستخدم حسب الحاجة.

4. صيياغة الرسالة البريدية التي من المفترض أن يتم إرسالها للمستخدم.

6. إرسال الرسالة.

 

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

*حاول قدر جهدك أن تلاحظ مبدأ عمل الكود وفكر كيف توائمه مع احتياجاتك.

 

احذف كل ما هو مكتوب في محرر الأكواد والصق الآتي

 

 

 

function onSubmit(e) {

let name = e.values[1]

let email = e.values[2]

let section = e.values[3]

let url;

if (section == "10") {

url = "https://google.com"

 

else {

url = "https://youtube.com"

 

}

let subject = "تأكيد التسجيل"

let message = `الفاضل/ة ${name}.

نتشرف بانضمامك معنا في الورشة التدريبية.

استعمل الرابط الآتي للانضمام إلى القاعة الافتراضية حسب الأوقات المعلنة.

أطيب التحايا.

الرابط

${url}

`

MailApp.sendEmail(emailsubjectmessage, {"name""فريق الدورة التخيلية"})

}

 

حسنًا, لنقم الآن بقراءة الكود سطرًا سطرًا لفهم ما يجري.

 

function onSubmit (e) { // هذا هو رأس الدالة التي من المفترض أن نقوم بربطها مع حدث الإرسال, ولاحظوا أنني وضعت متغيرًا بين القوسين لاستقبال استجابة المستخدم.

·       *لا داعي لتغيير شيء في هذا السطر.

let name = e.values[1] // استخراج الاسم من إجابة المستخدم ووضعه في متغير أسميناه name للإشارة إليه في وقت لاحق.

لاحظوا الرقم 1 بين القوسين المربعين بعد كلمة values, يشير هذا الرقم بطبيعة الحال إلى الترتيب الذي ورد فيه سؤال الاسم في الاستبيان, ولو سنتذكر قليلًا, كان رأس السؤال في جدول البيانات قابع في الخلية الثانية, والمعلوم أنه في البرمجة يبدأ العد دائمًا بالرقم 0, ولذلك تم وضع الرقم 1 للإشارة إلى محتوى الخلية الثانية, ولا داعي لأن إشير إلى ذلك في كلٍ من البريد الالكتروني والشعبة.

let email = e.values[2] و let section = e.values[3] هما سطران مكافئان للسطر الخاص باستخراج الاسم, لكنهما في هذه الحالة وُضِعا لاستخراج كل من البريد الالكتروني والشعبة.

let url; // الإعلان عن المتغير الذي سيتم فيه حفظ رابط الغرفة الافتراضية لكلا الشعبتين.

if (section == "10") { // جملة شرطية تتحقق ما إن كانت الشعبة 10 هي الشعبة التي حددها المستخدم

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

} else { // في حال عدم تحقق الشرط, أي لو كانت الشعبة المحددة لا تساوي الرقم 10

url = https://youtube.com // تعيين رابط الاجتماع للشعبة الأخرى.

} // نهاية بناء الشرط

 

 

let subject = "تأكيد التسجيل" // عنوان الرسالة.

يأتي بعد ذلك نص الرسالة البريدية الذي يتضح أنه قد تم وضعه في المتغير message, ونجد هنا أنه قد تم حقن الرسالة بالاسم الوارد من المستخدم ورابط الاجتماع وذلك بوضع المتغير الذي يشير إليهما بين القوسين المتعرجين الواقعين بعد علامة الدولار هكذا ${variable_name}

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

MailApp.sendEmail(email, subject, message, {"name": "فريق الدورة التخيلية"}) // تنفيذ الدالة المسؤولة عن إرسال الرسالة, وقد تم فيها تمرير كلًا من البريد الوارد عن استجابة المستخدم, وعنوان الرسالة, ومحتوى الرسالة, والاسم الظاهري للمرسل.

 

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

 

 

تفويض الكود.

 

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

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

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

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

 

أخيرًا: ربط الكود بحدث التسليم.

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

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

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

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

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

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

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

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

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

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

 

ماذا سيحدث بعد كل هذا؟

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

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

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

اضغط هنا للانتقال إلى الاستبيان.

 

شاكرًا لكم طيب قراءتكم وإليكم مني أحر التحايا.

 

 

  

هناك تعليق واحد:

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

    ردحذف

قل شيئًا