ربط نماذج جوجل (Google Forms) بـ Discord لإشعارات فورية.


المقدمة: ليش نحتاج نربط نماذج جوجل بـ Discord؟

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

الخطوة الأولى: إعداد Discord Webhook (الخطاف الشبكي)

أول شيء، لازم نسوي "خطاف شبكي" (Webhook) في Discord عشان نقدر نرسل له البيانات.

  1. افتح سيرفرك في Discord، وروح للقناة اللي تبغى تجيك فيها الإشعارات.
  2. اضغط بزر الفأرة الأيمن على اسم القناة، واختار Edit Channel (تعديل القناة).
  3. روح لـ Integrations (التكاملات)، بعدين Create Webhook (إنشاء خطاف شبكي).
  4. سمِّ الـ Webhook أي اسم تحبه، مثلاً Google Forms Bot، واختار صورة لو حبيت.
  5. الأهم هو إنك تنسخ رابط الـ Webhook URL. هذا الرابط هو اللي بنستخدمه في سكربت نماذج جوجل. لا تعطيه لأحد!

ملاحظة: الـ Webhook هو زي الباب اللي تفتحه في Discord عشان تستقبل رسائل خارجية. لو أحد عرف الرابط، يقدر يرسل أي شيء للقناة حقتك.

الخطوة الثانية: إعداد نماذج جوجل و Apps Script

الحين نجي للجزء الممتع، كيف نخلي نموذج جوجل يتكلم مع Discord.

  1. افتح نموذج جوجل اللي تبغى تربطه (أو سوي نموذج جديد).
  2. من أعلى الصفحة، اضغط على الثلاث نقاط (More)، واختار Script editor (محرر النصوص البرمجية). هذا بيفتح لك بيئة Google Apps Script.
  3. امسح أي كود موجود داخل ملف Code.gs، والصق الكود التالي:
function onFormSubmit(e) {
  var discordWebhookUrl = "YOUR_DISCORD_WEBHOOK_URL_HERE"; // هنا حط رابط الـ Webhook اللي نسخته
  var form = FormApp.getActiveForm();
  var allResponses = form.getResponses();
  var latestResponse = allResponses[allResponses.length - 1]; // آخر رد
  var itemResponses = latestResponse.getItemResponses();

  var message = "**رد جديد على نموذج جوجل!**\n\n";
  message += "وقت الإرسال: " + latestResponse.getTimestamp().toLocaleString("ar-SA") + "\n";
  
  itemResponses.forEach(function(itemResponse) {
    message += "- **" + itemResponse.getItem().getTitle() + "**: " + itemResponse.getResponse() + "\n";
  });

  sendToDiscord(discordWebhookUrl, message);
}

function sendToDiscord(webhookUrl, content) {
  var payload = JSON.stringify({
    content: content
  });

  var options = {
    method: "post",
    contentType: "application/json",
    payload: payload
  };

  UrlFetchApp.fetch(webhookUrl, options);
}

ملاحظة مهمة: لا تنسى تغير YOUR_DISCORD_WEBHOOK_URL_HERE في الكود وتحط رابط الـ Webhook اللي نسخته من Discord.

شرح سريع للكود:

  • دالة onFormSubmit(e): هذي الدالة تشتغل تلقائياً كل ما أحد يرسل رد جديد على النموذج.
  • تجمع الدالة آخر رد وصل للنموذج وتنسقه.
  • دالة sendToDiscord(webhookUrl, content): هذي الدالة هي اللي ترسل الرسالة الفعلية لـ Discord باستخدام UrlFetchApp.

الخطوة الثالثة: تشغيل السكربت (والموافقة على الصلاحيات)

باقي خطوة بسيطة عشان السكربت يشتغل تلقائي:

  1. في محرر Apps Script، من القائمة اليسرى، اضغط على أيقونة الساعة (Triggers - المشغلات).
  2. اضغط على Add Trigger (إضافة مشغل).
  3. في نافذة "Add Trigger" (إضافة مشغل):
    • اختر onFormSubmit للدالة اللي راح تشتغل (Choose function to run).
    • اختر From form للمصدر (Select event source).
    • اختر On form submit كنوع الحدث (Select event type).
  4. اضغط Save (حفظ).
  5. أول مرة تسوي كذا، بيطلب منك Google صلاحية عشان السكربت يقدر يوصل لنموذجك ويرسل طلبات خارجية. وافق على الصلاحيات المطلوبة.

الخطوة الأخيرة: التجربة!

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

نصيحة: لو ما وصل الإشعار، تأكد من رابط الـ Webhook، ومن إنك حفظت السكربت صح، وإن المشغل (Trigger) شغال وما فيه أخطاء في الصلاحيات. تقدر تشوف سجلات التنفيذ (Executions) في Apps Script عشان تشوف لو فيه أخطاء.

الخاتمة

وبكذا تكون ربطت نماذج جوجل بـ Discord بكل سهولة! هذي الطريقة بتوفر عليك وقت وجهد كبير، وتخليك على اطلاع بكل جديد يوصلك. يمديك تطور السكربت أكثر، مثلاً ترسل معلومات معينة بس، أو تنسق الرسالة بطرق مختلفة. بالتوفيق يا بطل!