السياق
نقدم، مثل مكتبات أكاديمية كثيرة، استشارات مع أمناء المكتبات المتخصصين موضوعيًا. ولأن مؤسستنا تخدم طلبة الدكتوراه والماجستير، ترتبط معظم الأسئلة بمجال بحث الطالب تحديدًا. ولذلك وجدنا أن طلب المساعدة مباشرة من أمين مكتبة البرنامج يوفر الوقت، بدل البدء بمن يصادف وجوده في مكتب المراجع. ويتيح ذلك أيضًا بناء علاقات شخصية بين الأمناء والطلاب قد تستمر طوال برنامج الدكتوراه.
المشكلة
كانت مشكلتنا المركزية: كيف نجعل الوصول إلينا أسهل ما يمكن؟ قررنا الثقة بقدرة الطلاب على معرفة ما إذا كان سؤالهم يستحق مخاطبة المتخصص مباشرة؛ لكن كيف نطبق ذلك؟ حين التحقت بمكتبة مركز الدراسات العليا بجامعة مدينة نيويورك CUNY، كان الحل القائم نموذج غوغل يسأل عن السؤال والمجال الموضوعي وأمور عامة. وعند إرساله، يصل إلى بريد مكتب المراجع الذي يراقبه عدة أمناء، وبصورة رئيسية رئيس قسم المراجع. ويقرأ من يراه الطلب، ثم يحيله بحسب محتواه إلى أمين المكتبة المناسب. وكان ذلك يؤدي الغرض ويضيف لمسة شخصية. لكن أبرز عيوبه احتمالات الخطأ البشري، إذ تبقى الرسائل أحيانًا أيامًا في الوارد، والعبء الإداري الإضافي على الأمناء.
التصميم
رأيت أن الحل إزالة الوسيط، ليوجه الطلاب وأعضاء هيئة التدريس طلب الاستشارة مباشرة إلى المتخصص. وطُرح إلغاء النموذج وإحالة المستفيدين إلى قائمة أمناء الاتصال، مع إرشادهم لمخاطبة أمين برنامجهم. وربما نجح ذلك، لكنه يضيف عبئًا إلى الإجراء على المستفيد، وقد يقلل الطلبات.
أردت بدلًا منه مسارًا سلسًا للطرفين، يتيح للمستفيد إيصال طلبه إلى المختص دون معرفة هويته؛ وللمختص تلقي الطلب المناسب دون وسيط؛ وللتغيرات، كالتفرغ العلمي أو المسؤوليات الجديدة، أن تنعكس بسهولة دون تعديلات كبيرة للنظام.
لذلك كان لا بد من الأتمتة وتعيين المختص الصحيح من معلومات النموذج. وفكرت فترة في تعلم آلي يُدرَّب على الوصف المطول للمشكلة، ويقارنه بقائمة خبرائنا؛ لكنني خلصت إلى أنه غير موثوق ومعقد أكثر من اللازم.
وسرعان ما توصلت إلى إضافة سؤال واحد: «إلى أي برنامج أكاديمي تنتمي؟». فلكل برنامج أمين اتصال محدد، مما يوفر علاقة واحد إلى واحد لتحديد المسؤول عن الاستشارة. وتتيح هذه المعلومة، مدعومة بإجابات النموذج الأخرى، مطابقة الطلب بالمختص. وبقي التحدي إجراء ذلك فور وصول الطلب، وإنتاج رسالة تصل إلى الأمين بقناة اعتاد مراجعتها بانتظام.
نماذج غوغل وجداول غوغل
تأثر اختياري بالمسار القائم، لأننا كنا نستخدم Google Forms. وظهر الحل في توظيف أدوات غوغل المجانية لإرسال رسالة آلية كلما أرسل مستفيد النموذج. ويعرض الشكل الأول في الأصل محتوى النموذج. وفي صفحة إدارته أيقونة خضراء صغيرة تصل إلى جدول الإجابات، كما يوضح الشكل الثاني. وفي صفحة الجدول قائمة «الإضافات» Extensions، كما في الشكل الثالث.
يؤدي رابط Apps Script إلى منصة غوغل البرمجية التي تستخدم صيغة معدلة ومتخصصة قليلًا من JavaScript للتفاعل مع نتائج النموذج. وقد كتبنا دالة تُشغَّل عند إرسال النموذج، وتتخذ مدخلاته قيمًا تحدد سلوكها.
بناء الدالة
نبدأ بتسمية الدالة وإنشاء كائن يمثل أمين المكتبة
function emailLibrarian(e){
var librarians = [];
function librarian(name, email, programs, available){
this.name = name;
this.email = email;
this.programs = programs;
this.available = available;
librarians.push(this); //Adds librarian to array
}
وفي السطر التالي، يمثل e «كائن الحدث» الذي تمرره نماذج غوغل؛ أي محتوى النموذج الذي أرسله المستفيد، وسنستخدمه لاحقًا.
function emailLibrarian(e){
ويضيف السطر الآتي كل أمين أنشئ إلى قائمة الأمناء لاستخدامه لاحقًا.
librarians.push(this); //Adds librarian to array
ويمثل هذا المنشئ كل خبير موضوعي لدينا
function librarian(name, email, programs, available)
ومن أمثلة تعريف أحد الأمناء
var StephenZweibel = new librarian("Stephen Zweibel", "szweibel@gc.cuny.edu", [
"Comparative Literature", "Data Analysis and Visualisation", "Data Science",
"Data Visualization", "Demography", "Digital Humanities", "French",
"Geography/GIS", "Language and Literacy",
"Master of Arts in Liberal Studies (MALS)", "Music",
"Psychology of Political Behavior"], true);
وترتيب القيم هنا: اسم المتخصص، وبريده الإلكتروني، وقائمة المجالات المسؤول عنها، ثم true التي تمثل إتاحته. وتصبح false إذا كان في تفرغ علمي مثلًا.
ويُنشأ كائن لكل أمين ويضاف إلى القائمة، على النحو الآتي
var librarians = [StephenZweibel, …];
بعد ذلك نأخذ المجال الموضوعي المناسب من الطلب ونطابقه بأمين المكتبة.
MALS: e.values[10],Status: e.values[5], Purpose: e.values[6], Availability: e.values[7], Topic: e.values[8], "Steps taken": e.values[9]}
يفصل هذا المتغير إجابات النموذج e إلى خصائص يمكن قراءتها ومعالجتها. والبرنامج Program مهم لأنه أساس المطابقة مع بريد أمين الاتصال.
var liaison = librarians.filter(function(liaison){
return liaison.programs.includes(program);
})[0];
var liaisonEmail = liaison.email;
ويستخدم ذلك طريقة ترشيح القائمة وفق قاعدة: هل يتضمن اختصاص الأمين البرنامج الذي اختاره المستفيد، كالأنثروبولوجيا أو الإنجليزية أو الأدب المقارن؟
وأضفت قواعد تتجاوز الاختيار المعتاد حين تكون إجابة أخرى أهم من البرنامج الأكاديمي، مثل
if (values.Purpose == "Data Management"){
liaisonEmail = "szweibel@gc.cuny.edu";
}
فتختارني هذه القاعدة مستلمًا وفق معيار مختلف عن البرنامج. ومن التدخلات المهمة أيضًا
if (liaison.available == false){
liaisonEmail = "ref@gc.cuny.edu";
};
وهنا نراعي عدم إتاحة الأمين ونرسل الرسالة إلى البريد العام. ثم نبني الرسالة ونرسلها
// Construct the email text
var text = "Hello,\n\n"
text += values.Name + " has requested a research consultation.\n\n"
for (var item in values) {
text += item+ ": "+values[item]+"\n\n";
}
MailApp.sendEmail (liaisonEmail, subject, text, {cc: "ref@gc.cuny.edu"});
};
تتحول القيم إلى نص، وتستخدم أدوات MailApp لإرساله إلى أمين الاتصال الصحيح، مع نسخة إلى بريد مكتب المراجع.
مثال على الرسالة
مرحبًا، طلب **** استشارة بحثية. الاسم: ****. بريد المستفيد: ****@gc.cuny.edu. الهاتف: ****. البرنامج: الإنسانيات الرقمية. الصفة: طالب. الغرض: أطروحة أو رسالة أو مشروع ختامي. الإتاحة: الاثنين 18 أكتوبر من الثانية إلى السادسة، والأربعاء 20 أكتوبر من الثانية إلى السادسة، والخميس 21 أكتوبر من الثانية إلى السادسة. الموضوع: أعمل على مشروعي الختامي، وأريد استشارة بشأن أفضل طريقة لإيداع مشروعي الرقمي وحفظه. الخطوات السابقة: تحدثت مع الزملاء الرقميين عن تقنيات الصوت.
الإعدادات
بقيت خطوة مهمة: ضبط تشغيل الدالة بمُشغِّل. ننتقل إلى قسم Triggers، كما في الشكل الرابع، ثم نضبط إعدادات المشغل كما في الشكل الخامس: الدالة emailLibrarian، والنشر Head، ومصدر الحدث From spreadsheet، ونوع الحدث On form submit، مع إخطار يومي عند الإخفاق Notify me daily، ثم Save للحفظ. وتعمل الدالة بعد ذلك كلما أرسل مستخدم النموذج. ولحسن الحظ، يصلنا تنبيه أيضًا إذا أخفقت لأي سبب، وغالبًا ما يكون ذلك لخطأ إملائي مني في اسم برنامج أكاديمي.
المزايا والعيوب
يعمل هذا البرنامج في الغالب دون تدخل، وقد استمر سنوات. لكنه يحتاج إلى تحديث دوري لإتاحة الأمناء وتغير مسؤولياتهم. وأكبر مصدر قلق هو الاعتماد على أدوات مجانية خارجة عن سيطرتنا؛ فقد غيّرت غوغل طريقة عمل أدواتها مرة تغييرًا كبيرًا استلزم تعديلات طفيفة لدينا.
ومن العيوب المحتملة استمرارية العمل: فإذا تركت منصبي، ربما لا يكون الإجراء واضحًا لخلفي. وآمل أن يمثل المقال توثيقًا له.
ومنذ تطبيق الحل، أصبح الأمناء يرون رسائل النموذج جزءًا بديهيًا من البنية التشغيلية. ونستقبل نحو عشر رسائل شهريًا، وهو معدل جيد لقاعدة مستفيدينا الصغيرة.
الموارد
يرد رابط نموذج طلب الموعد ومصدر شيفرة JavaScript في إحالات الأصل أدناه.
المراجع
- https://docs.google.com/forms/d/e/1FAIpQLSdnPu7VWGbEP9FRzgGtrqbDgeUGZ7qbqZwTnaeeX0RVEz8BhA/viewform