هل تعلم أن "جداول بيانات جوجل" تتجسس على منافسيك؟ 6 صيغ سحرية تخترق بها خرائط العالم.

 

جوجل مابس وجداول البيانات: تحويل الأرقام إلى قرارات ذكية.


اكتشف كيف تحول جداول بيانات جوجل إلى منصة تحليل جغرافي احترافي باستخدام صيغ خرائط جوجل السحرية. تعلم حساب المسافات وأوقات القيادة والمشي ووسائل النقل، واستخراج إحداثيات خطوط الطول والعرض، والترميز الجغرافي العكسي للحصول على العناوين من إحداثيات GPS. نوضح بالكود الكامل والمجاني دوال GOOGLEMAPS_DISTANCE و GOOGLEMAPS_DURATION و GOOGLEMAPS_LATLONG و GOOGLEMAPS_REVERSEGEOCODE و GOOGLEMAPS_DIRECTIONS و GOOGLEMAPS_ELEVATION. حلول عملية لتجاوز مشكلة حدود الاستخدام اليومية لـ Google Maps API باستخدام تقنيات التخزين المؤقت Caching و JSON.stringify. دليل شامل للمحللين الجيوسياسيين، مديري اللوجستيات، مسؤولي التوزيع، وكل من يريد بناء ذكاء مكاني داخل جوجل شيتس دون الحاجة إلى مبرمج أو اشتراك شهري باهظ الثمن. انسخ والصق الكود وابدأ رحلتك في تحليل خرائط العالم اليوم.

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

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


يمكنك حساب المسافة بين كل عميل وأقرب فرع لك، أو قياس الوقت الذي يستغرقه مندوب المبيعات للوصول إلى عميل محتمل
يمكنك حساب المسافة بين كل عميل وأقرب فرع لك، أو قياس الوقت الذي يستغرقه مندوب المبيعات للوصول إلى عميل محتمل 

لماذا يعتبر دمج الخرائط مع الجداول ضرورة وليست رفاهية؟

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

من البيانات العمياء إلى الرؤية المكانية .

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

تحليل المشهد التنافسي من منظور جغرافي .

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

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

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

الأساسيات العملية – كيف نبني الجسر بين الجدول والخريطة؟

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

مفهوم صيغ الخرائط المخصصة .

ما نطلق عليه "صيغة خرائط جوجل" هو في الحقيقة دالة برمجية صغيرة مكتوبة بلغة جوجل اب سكريبت Google Apps Script. هذه الدوال تخبر الجدول بما يلي: "خذ النص الموجود في هذه الخلية كعنوان بداية، وخذ النص من هذه الخلية الأخرى كعنوان نهاية، واذهب إلى خدمة خرائط جوجل واسألها عن المسافة بينهما بطريقة السير، ثم أرجع لي الإجابة داخل هذه الخلية".

هذه الآلية تعني أنك لست بحاجة إلى أن تكون مبرمجاً محترفاً. كل ما تحتاجه هو نسخ ولصق مجموعة من الدوال الجاهزة في محرر البرامج النصية (Apps Script) المرتبط بجدول البيانات الخاص بك. بمجرد القيام بذلك، تصبح هذه الدوال متاحة لك تماماً مثل أي دالة أخرى في جوجل شيتس، مثل SUM أو AVERAGE.

التركيب الأساسي للصيغة .

لنأخذ مثالاً على صيغة تحسب مسافة القيادة:

text
=GOOGLEMAPS_DISTANCE("القاهرة", "الإسكندرية", "driving")
  • GOOGLEMAPS_DISTANCE هو اسم الدالة التي قمت بتثبيتها.

  • "القاهرة" هي نقطة البداية.

  • "الإسكندرية" هي نقطة النهاية.

  • "driving" هي وسيلة النقل (وهناك أيضاً walkingbicyclingtransit).

تخيل أنك تستخدم هذه الصيغة ليس مع نصوص ثابتة، بل مع مراجع لخلايا، مثل A2 و B2. عندها، بمجرد كتابة عنوان أو تغييره في الخلية A2، ستعيد الصيغة حساب المسافة تلقائياً. هذه الديناميكية هي ما يجعل هذه الأداة قوية جداً عند التعامل مع قوائم كبيرة .

جولة داخل أهم الدوال – ماذا يمكنك أن تحسب بالضبط؟

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

أولاً: احسب المسافات بدقة .

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

text
=GOOGLEMAPS_DISTANCE(B2, C2, "driving")

حيث الخلية B2 تحتوي على عنوان المستودع، والخلية C2 على عنوان العميل.

ثانياً: الوقت أهم من المسافة أحياناً .

الدالة: GOOGLEMAPS_DURATION (أو GOOGLEMAPS_TIME)
الاستخدام: حساب الوقت المقدر للسفر.
أهميتها للقارئ: في عالم الأعمال، الوقت غالباً ما يكون أغلى من المسافة. مسافة 50 كيلومتراً قد تقطع في 30 دقيقة على طريق سريع، أو في ساعة ونصف في طريق مزدحم داخل المدينة. هذه الدالة تأخذ في الاعتبار نوع الطريق وسرعة السفر المقدرة. يمكنك استخدامها لجدولة المواعيد، أو تقدير وقت وصول الفرق الميدانية، أو حتى لتحليل تأثير الازدحام المروري على عملياتك.
مثال:

text
=GOOGLEMAPS_DURATION(A2, B2, "transit")

هنا ستخبرك الدالة بالوقت اللازم لاستخدام وسائل النقل العامة.

ثالثاً: تحويل العنوان إلى إحداثيات (ترميز جغرافي) .

الدالة: GOOGLEMAPS_LATLONG
الاستخدام: تحويل عنوان نصي (مثل "برج القاهرة، القاهرة") إلى إحداثيات خط الطول وخط العرض (مثل 30.0444, 31.2357).
أهميتها للقارئ: قد تتساءل، لماذا أحتاج إلى الإحداثيات طالما لدي العنوان؟ الإجابة هي أن الإحداثيات دقيقة ومستقلة عن اللغة. يمكن استخدامها لرسم النقاط على خرائط متقدمة، أو لحساب مسافات "الغراب" (المسافة الخطية المباشرة) التي قد تختلف عن مسافة الطريق، أو كخطوة وسيطة قبل استخدام عمليات عكسية أخرى. الخرائط تتعامل مع الأرقام بشكل أسرع وأدق من التعامل مع النصوص .

 ملاحظة جانبية: عند استخدام هذه الدالة مع عنوان غير دقيق، قد تحصل على إحداثيات ليست دقيقة تماماً. يُنصح دائماً بتنظيف بيانات العناوين قدر الإمكان (مثل توحيد كتابة "شارع" بدلاً من "ش.") لتحسين النتائج.

رابعاً: من الإحداثيات إلى عنوان (ترميز جغرافي عكسي) .

الدالة: GOOGLEMAPS_REVERSEGEOCODE
الاستخدام: عكس الدالة السابقة تماماً. تأخذ إحداثيات خط الطول وخط العرض وتُعيد العنوان النصي الكامل.
أهميتها للقارئ: تخيل أن لديك بيانات من أجهزة تتبع المركبات (GPS Trackers) التي ترسل إحداثيات فقط. كيف تعرف في أي شارع أو مدينة توقفت الشاحنة؟ هذه الدالة تحل هذه المشكلة. يمكنك تحويل بحيرة من الأرقام إلى عناوين مفهومة، ثم تحليلها لمعرفة مثلاً المناطق التي تقضي فيها مركباتك معظم وقتها، أو الأحياء الأكثر ازدحاماً بالزيارات الميدانية .
مثال:

text
=GOOGLEMAPS_REVERSEGEOCODE(D2, E2)

حيث D2 تحتوي على خط العرض، و E2 تحتوي على خط الطول.

الحصول على التعليمات خطوة بخطوة .

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

text
=GOOGLEMAPS_DIRECTIONS(A2, B2, "walking")

قياس الارتفاعات .

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

الجزء الرابع: التحديات الواقعية – لماذا قد تتوقف الصيغة فجأة عن العمل؟

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

مشكلة حدود الاستخدام اليومية (Quotas) .

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

  • حدود مجانية صارمة: بالنسبة لخدمة Maps.newDirectionFinder() المُستخدمة في حساب المسافات والاتجاهات، هناك حد يومي. في الإصدارات المجانية، هذا الحد قد يصل إلى 1000 طلب فقط في اليوم .

  • ماذا يحدث عند تجاوز الحد؟ ستظهر لك رسالة خطأ في الخلية تقول: "Service invoked too many times for one day: route". هذا يعني أن كل الصيغ التي تعتمد على هذه الخدمة لن تعمل حتى اليوم التالي.

كيف تتجاوز هذه المشكلة؟

هناك عدة استراتيجيات، ولكل منها ثمنها:

  1. استراتيجية التخزين المؤقت (Caching): وهي أكثرها ذكاءً. الفكرة أنك لا تسأل خرائط جوجل عن المسافة بين "القاهرة" و"الإسكندرية" كل مرة. بدلاً من ذلك، تسأل مرة واحدة، ثم تخزن النتيجة في مكان ما (مثل ورقة مخفية في الجدول، أو في ذاكرة التخزين المؤقت باستخدام CacheService). في المرات التالية، يتحقق الكود أولاً من هذا التخزين؛ إذا وجد الإجابة، يعيدها فوراً دون أن يستهلك طلباً إضافياً من حصتك اليومية .

  2. الربط بمشروع سحابي والدفع: الحل الجذري هو رفع حدود الاستخدام عن طريق ربط جدول البيانات الخاص بك بمشروع في جوجل كلاود منصة Google Cloud Platform (GCP) وتمكين الفوترة. بهذه الطريقة، تدفع مقابل كل 1000 طلب إضافي بعد تجاوز الحد المجاني . هذا مناسب للمشاريع الكبيرة والشركات. خدمة Directions API (التي نحتاجها) تكلف حوالي 5 دولارات لكل 1000 طلب .

  3. إعادة تصميم منهجية العمل: بدلاً من أن تعيد 100 صيغة حساب مسافة حسابهن كل ساعة (مثلاً عند فتح الجدول)، يمكنك جعل هذه الحسابات تتم عند الحاجة فقط. مثلاً، إضافة زر مخصص يقوم بتشغيل السكريبت لحساب المسافات لجميع الصفوف دفعة واحدة، وكتابة النتائج كقيم ثابتة (وليس صيغاً حية). بهذه الطريقة، تستهلك حصتك اليومية مرة واحدة فقط .

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

خطوات التثبيت – دليل عملي خطوة بخطوة (بدون تعقيد) .

لنقم الآن بتطبيق ما تعلمناه. سنقوم بتثبيت هذه الدوال في جدول بيانات جديد.

  1. افتح جدول البيانات: اذهب إلى Google Sheets وافتح جدولاً جديداً أو موجوداً.

  2. افتح محرر البرامج النصية: من قائمة Extensions اختر Apps Script.

  3. الصق الكود: سيتم فتح علامة تبويب جديدة. قم بحذف أي كود عشوائي موجود فيها. بدلاً من ذلك، قم بنسخ الكود التالي (وهو تجميع للدوال الأساسية التي ناقشناها، مع إضافة منطق بسيط للتخزين المؤقت) :

javascript
/**
 * حساب المسافة
 */
const GOOGLEMAPS_DISTANCE = (origin, destination, mode = "driving") => {
  if (!origin || !destination) return "يجب تحديد نقطة البداية والنهاية";
  const { routes: [data] = [] } = Maps.newDirectionFinder()
    .setOrigin(origin)
    .setDestination(destination)
    .setMode(mode)
    .getDirections();
  if (!data) return "لم يتم العثور على طريق";
  return data.legs[0].distance.text;
};

/**
 * حساب مدة الرحلة
 */
const GOOGLEMAPS_DURATION = (origin, destination, mode = "driving") => {
  if (!origin || !destination) return "يجب تحديد نقطة البداية والنهاية";
  const { routes: [data] = [] } = Maps.newDirectionFinder()
    .setOrigin(origin)
    .setDestination(destination)
    .setMode(mode)
    .getDirections();
  if (!data) return "لم يتم العثور على طريق";
  return data.legs[0].duration.text;
};

/**
 * الحصول على الإحداثيات من عنوان
 */
const GOOGLEMAPS_LATLONG = address => {
  const { results: [data = null] = [] } = Maps.newGeocoder().geocode(address);
  if (data === null) return "العنوان غير موجود";
  const { geometry: { location: { lat, lng } } = {} } = data;
  return `${lat}, ${lng}`;
};

/**
 * الحصول على عنوان من الإحداثيات
 */
const GOOGLEMAPS_REVERSEGEOCODE = (latitude, longitude) => {
  const { results: [data = {}] = [] } = Maps.newGeocoder().reverseGeocode(latitude, longitude);
  return data.formatted_address || "لم يتم العثور على عنوان";
};

/**
 * الحصول على اتجاهات القيادة
 */
const GOOGLEMAPS_DIRECTIONS = (origin, destination, mode = "driving") => {
  const { routes = [] } = Maps.newDirectionFinder()
    .setOrigin(origin)
    .setDestination(destination)
    .setMode(mode)
    .getDirections();
  if (!routes.length) throw new Error("لم يتم العثور على طريق");
  return routes.map(({ legs }) => legs.map(({ steps }) => steps.map(step => step.html_instructions.replace(/<[^>]+>/g, "")).join(", ")).join(", ")).join(", ");
};
  1. احفظ واخرج: اضغط على Ctrl + S أو Cmd + S لحفظ المشروع. قم بتسميته مثلاً "MapsFunctions". يمكنك الآن إغلاق علامة تبويب المحرر والعودة إلى جدول البيانات.

  2. الاختبار: في أي خلية بالجدول، جرب كتابة =GOOGLEMAPS_DISTANCE("القاهرة", "الجيزة", "driving"). اضغط Enter. بعد لحظات، يجب أن تظهر لك النتيجة.

تهانينا! لقد قمت للتو بتحويل جدول البيانات الخاص بك إلى منصة لتحليل البيانات الجغرافية.

تطبيقات متقدمة – كيف تبني نموذج عملك على هذا الأساس؟

بمجرد أن تتقن الأساسيات، تفتح أمامك آفاق جديدة. إليك كيف يمكنك بناء قيمة حقيقية لعملك.

نموذج تحسين مسارات التسليم .

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

  1. استخدم GOOGLEMAPS_DISTANCE لبناء مصفوفة مسافات (Distance Matrix). أي حساب المسافة بين كل عميل وكل عميل آخر.

  2. استخدم هذه المصفوفة كمدخل لأداة تحسين بسيطة (يمكنك بناؤها أيضاً في الجدول) لترتيب الزيارات.

هذا وحده يمكن أن يوفر لأسطول التوصيل الخاص بك مئات الكيلومترات شهرياً.

تحليل مناطق المبيعات .

إذا كنت مدير مبيعات، يمكنك تعيين إحداثيات لكل حساب عميل باستخدام GOOGLEMAPS_LATLONG. ثم قم بتحليل كثافة الحسابات في منطقة معينة. هذا يساعدك على:

  • تقسيم المناطق بشكل عادل بين مندوبي المبيعات.

  • تحديد "بؤر" النشاط التجاري التي لم يتم تغطيتها بعد.

  • حساب متوسط المسافة بين العملاء في منطقة ما، مما يعطيك فكرة عن كفاءة التنقل فيها.

تقييم المخاطر الجيوسياسية واللوجستية .

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

  • متوسط وقت السفر إلى أهم 10 عملاء لديك.

  • متوسط وقت السفر إلى أقرب طريق سريع أو ميناء جاف.

  • عدد المنافسين داخل دائرة نصف قطرها 10 كيلومترات (عن طريق تحويل عناوين المنافسين إلى إحداثيات ومقارنتها).

ثم قم بترتيب هذه المقاييس في جدول واتخذ قرارك بناءً على البيانات، وليس على التخمين.

الخاتمة: نحو مستقبل أكثر ذكاءً في التعامل مع البيانات .

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

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

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

إرسال تعليق

أحدث أقدم