أساسيات برمجة التطبيقات مع جداول بيانات Google رقم 2: جداول البيانات وجداول البيانات والنطاقات

1. مقدمة

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

ما ستتعرَّف عليه

  • كيفية تمثيل جداول البيانات والأوراق والنطاقات في "برمجة التطبيقات".
  • كيفية الوصول إلى جدول البيانات النشط (المفتوح) وإنشاءه وإعادة تسميته من خلال الصفين SpreadsheetApp وSpreadsheet.
  • كيفية تغيير اسم ورقة واتجاه الصف/النطاق في صف أو صف، باستخدام صف Sheet.
  • كيفية تحديد مجموعة خلايا أو نطاق بيانات وتفعيلها ونقلها وترتيبها باستخدام صف Range.

قبل البدء

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

الأشياء التي تحتاج إليها

  • فهم لمواضيع "برمجة تطبيقات Google" الأساسية التي تم استكشافها في الدرس التطبيقي السابق حول الترميز في قائمة التشغيل هذه
  • دراية أساسية بمحرِّر "برمجة تطبيقات Google"
  • إلمام أساسي بـ جداول بيانات Google
  • إمكانية قراءة تدوين A1 في "جداول بيانات Google"
  • الإلمام بأساسيات JavaScript وفئة String

يقدم القسم التالي الفئات الأساسية لخدمة جداول البيانات.

2. مقدمة عن خدمة جداول البيانات

تشمل أربعة صفوف أساس خدمة جداول البيانات: SpreadsheetApp وSpreadsheet وSheet وRange. يصف هذا القسم هذه الصفوف والأغراض التي يتم استخدامها.

فئة spreadsheetApp

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

جداول البيانات والأوراق وصفوفها

كعبارة جدول بيانات، جدول البيانات هو ملف في "جداول بيانات Google" (مخزّن في Google Drive) يحتوي على بيانات منظّمة حسب الصفوف والأعمدة. يُشار إلى جدول البيانات أحيانًا باسم "جدول بيانات Google"، ويُشار إليه أيضًا باسم "مستند Google".

يمكنك استخدام صف Spreadsheet للوصول إلى بيانات ملف "جداول بيانات Google" وتعديلها. يمكنك أيضًا استخدام هذا الصف للعمليات الأخرى على مستوى الملف، مثل إضافة المتعاونين.

f00cc1a9eb606f77.png

تمثل الورقة** الصفحة الفردية لجدول بيانات، ويُشار إليها أحيانًا باسم &tab;tab." يمكن أن يحتوي كل جدول بيانات على ورقة واحدة أو أكثر. يمكنك استخدام صف Sheet** للوصول إلى البيانات والإعدادات على مستوى الورقة وتعديلها، مثل نقل الصفوف أو أعمدة البيانات.

39dbb10f83e3082.png

باختصار، تعمل الفئة Spreadsheet على مجموعة من الأوراق وتحدّد ملف "جداول بيانات Google" في Google Drive. تعمل صف Sheet على أوراق فردية داخل جدول بيانات.

فئة النطاق

تتطلب منك معظم عمليات معالجة البيانات (مثل قراءة بيانات الخلية أو كتابتها أو تنسيقها) تحديد الخلايا التي تنطبق عليها العملية. يمكنك استخدام صف Range لاختيار مجموعات محدّدة من الخلايا داخل ورقة. تمثّل مثيلات هذا الصف نطاقًا، وهو مجموعة من خلايا مجاورة أو أكثر في ورقة. يمكنك تحديد النطاقات حسب أرقام الصفوف والأعمدة أو باستخدام تدوين A1.

يعرض الجزء المتبقي من الدرس التطبيقي أمثلة على النصوص البرمجية التي تعمل مع هذه الصفوف وأساليبها.

3- إعداد

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

5376f721894b10d9.png

يتم وضع نسخة من نموذج جدول البيانات لك لتستخدِمه في مجلد Google Drive باسم "نسخة من جدول بيانات بلا عنوان&&quot؛ استخدم جدول البيانات هذا لإكمال هذا الدرس التطبيقي حول الترميز.

كتذكير، يمكنك فتح محرر النص البرمجي من "جداول بيانات Google" بالنقر على الإضافات&gt؛ برمجة التطبيقات.

عند فتح مشروع "برمجة تطبيقات Google" في محرِّر النصوص البرمجية للمرة الأولى، ينشئ محرِّر النصوص البرمجية مشروع نص برمجي وملف نص برمجي لك.

يعرض لك القسم التالي كيفية استخدام الصف Spreadsheet لتحسين جدول البيانات هذا.

4. الوصول إلى جداول البيانات وتعديلها

في هذا القسم، يمكنك التعرّف على كيفية استخدام الصفين SpreadsheetApp وSpreadsheet للوصول إلى جداول البيانات وتعديلها. وعلى وجه التحديد، تعلمك التمارين كيفية إعادة تسمية جدول بيانات وتكرار الأوراق داخل جدول بيانات.

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

إعادة تسمية جدول البيانات النشط

لنفترض أنك أردت تغيير الاسم الافتراضي،"نسخة من جدول بيانات - بدون عنوان — إلى عنوان يعكس غرض جدول بياناتك بشكل أفضل. ويمكنك إجراء ذلك باستخدام صفوف SpreadsheetApp وSpreadsheet.

  1. في محرِّر النص البرمجي، استبدِل المجموعة التلقائية للرموز في myFunction() بالرمز التالي:
function renameSpreadsheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
  1. لحفظ النص البرمجي، انقر على رمز الحفظ تصدٍّ للكرة.
  2. لإعادة تسمية مشروع "برمجة التطبيقات"، انقر على مشروع بلا عنوان، وأدخِل أسعارًا&مظهرية، وما مِن "أسعار Avocado"؛ كاسم المشروع الجديد، ثم انقر على إعادة تسمية.
  3. لتشغيل النص البرمجي، اختَر renameSpreadsheet من قائمة الدوال وانقر على تشغيل.
  4. تفويض وحدة الماكرو باتّباع التعليمات الظاهرة على الشاشة. إذا ظهرت رسالة && في التطبيق، فلم يتم التحقق من صحته، انقر على خيارات متقدمة ثم انقر على الانتقال إلى أسعار الأفوكادو (غير آمن). في الشاشة التالية، انقر على السماح.

بعد تنفيذ الدالة، من المفترض أن يتغيّر اسم ملف جدول البيانات:

226c7bc3c2fbf33e.png

لنلقِ نظرة على الرمز الذي أدخلته. تعرض طريقة getActiveSpreadsheet() كائنًا يمثل جدول البيانات النشط، أي نسخة من جدول بيانات التمارين الذي أنشأته. يتم تخزين عنصر جدول البيانات هذا في المتغيّر mySS. يؤدي استدعاء rename(newName) في mySS إلى تغيير اسم ملف جدول البيانات في Google Drive إلى "أسعار أفوكادو" 2017 في بورتلاند، سياتل.

بما أنّ المتغيّر mySS هو مرجع لجدول البيانات، يمكنك جعل رمزك أكثر وضوحًا وكفاءة أكبر من خلال طلب أساليب Spreadsheet على mySS بدلاً من استدعاء getActiveSpreadsheet() بشكل متكرّر.

إنشاء نسخة طبق الأصل من الورقة النشطة

في جدول البيانات الحالي، لديك ورقة واحدة فقط. يمكنك استدعاء طريقة Spreadsheet.duplicateActiveSheet() لإنشاء نسخة من الورقة:

  1. أضف الدالة الجديدة التالية أسفل الدالة renameSpreadsheet() الموجودة من قبل في مشروع النص البرمجي:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();
}
  1. احفظ مشروع النص البرمجي.
  2. لتشغيل النص البرمجي، اختَر duplicateAndOrganizeActiveSheet من قائمة الدوال وانقر على تشغيل.

ارجع إلى "جداول بيانات Google" للاطّلاع على علامة تبويب جديدة من نوع Sheet_Original&quot؛ تمت إضافة علامة تبويب الورقة إلى جدول البيانات.

d24f9f4ae20bf7d4.gif

في هذه الدالة الجديدة، تُنشئ طريقة duplicateActiveSheet() الورقة المكرّرة وتفعّلها وتعرضها في جدول البيانات. تم تخزين هذه الورقة الناتجة في duplicateSheet، لكن الرمز لم ينفذ أي إجراء باستخدام هذا المتغير حتى الآن.

في القسم التالي، ستستخدم الصف Sheet لإعادة تسمية الورقة المكرّرة وتنسيقها.

5. تنسيق جدول البيانات باستخدام صف البيانات

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

تغيير اسم الورقة

عملية إعادة تسمية الأوراق بسيطة مثل إعادة تسمية جدول البيانات في renameSpreadsheet(). يتطلب الأمر استدعاء طريقة واحدة فقط.

  1. في"جداول بيانات Google"، انقر على ورقة Sheet_Original لتفعيلها.
  2. في "برمجة التطبيقات"، عدِّل الدالة duplicateAndOrganizeActiveSheet() لتطابق ما يلي:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
  1. حفظ الدالة وتشغيلها.

في "جداول بيانات Google"، يتم إنشاء ورقة مكررة وإعادة تسميتها عند تشغيل الدالة:

91295f42354f62e7.gif

في الرمز المُضاف، تغيّر الطريقة setName(name) اسم duplicateSheet، باستخدام getSheetID() للحصول على رقم تعريف فريد للورقة. يربط عامل التشغيل + رقم تعريف الورقة في نهاية سلسلة "Sheet_".

تعديل أعمدة وصفوف جداول بيانات

يمكنك أيضًا استخدام صف Sheet لتنسيق جدول البيانات. على سبيل المثال، يمكننا تعديل دالة duplicateAndOrganizeActiveSheet() لتغيير حجم أعمدة الورقة المكرّرة أيضًا وإضافة صفوف مجمّدة:

  1. في"جداول بيانات Google"، انقر على ورقة Sheet_Original لتفعيلها.
  2. في "برمجة التطبيقات"، عدِّل الدالة duplicateAndOrganizeActiveSheet() لتطابق ما يلي:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);
}
  1. حفظ الدالة وتشغيلها.

في "جداول بيانات Google"، يتم إنشاء ورقة مكررة وإعادة تسميتها وتفعيلها وتنسيقها:

2e57c917ab157dad.gif

يستخدم الرمز الذي أضفته autoResizeColumns(startColumn, numColumns) لتغيير حجم أعمدة الورقة لتسهيل القراءة. تجمّد طريقة setFrozenRows(rows) عدد الصفوف المحدّد (في هذه الحالة) الذي يحافظ على صفوف العنوان مرئية أثناء انتقال القارئ في جدول البيانات.

في القسم التالي، ستتعرّف على المزيد من المعلومات عن النطاقات ومعالجة البيانات الأساسية.

6- إعادة ترتيب البيانات باستخدام فئة النطاق

توفِّر فئة Range وأساليبها معظم خيارات معالجة البيانات وتنسيقها في خدمة جداول البيانات.

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

نقل النطاقات

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

لنبدأ تحديث طريقة duplicateAndOrganizeActiveSheet() لنقل بعض البيانات أيضًا:

  1. في "جداول بيانات Google"، انقر على ورقة Sheet_Original لتفعيلها.
  2. في "برمجة التطبيقات"، عدِّل الدالة duplicateAndOrganizeActiveSheet() لتطابق ما يلي:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));
}
  1. حفظ الدالة وتشغيلها.

عند تشغيل هذه الدالة، يتم إنشاء ورقة مكررة وتنشيطها وتنسيقها. ويتم نقل محتوى العمود "و" إلى العمود "ج":

10ea483aec52457e.gif

يستخدم الرمز الجديد الطريقة getRange(a1Notation) لتحديد نطاق البيانات الذي سيتم نقله. من خلال إدخال التدوين A1 "F2:F" ومعلمة الطريقة's، فإنك تحدد العمود F (باستثناء F1). إذا كان النطاق المحدّد موجودًا، ستعرض الطريقة getRange(a1Notation) مثيل Range. يخزِّن الرمز المثيل في المتغيّر myRange لتسهيل الاستخدام.

بعد تحديد النطاق، تأخذ طريقة moveTo(target) محتوى myRange (كل من القيم والتنسيق) وتنقلها. يتم تحديد الوجهة (العمود C) باستخدام علامة A1 "C2". هذه خلية واحدة، بدلاً من عمود. عند نقل البيانات، لا تحتاج إلى مطابقة الأحجام مع النطاقات المستهدفة والوجهة. ويسهّل "برمجة التطبيقات" على الخلية الأولى لكل عنصر.

ترتيب النطاقات

تتيح لك صف Range قراءة مجموعات الخلايا وتعديلها وتنظيمها. على سبيل المثال، يمكنك ترتيب نطاق بيانات باستخدام الطريقة Range.sort(sortSpecObj):

  1. في "جداول بيانات Google"، انقر على ورقة Sheet_Original لتفعيلها.
  2. في "برمجة التطبيقات"، عدِّل الدالة duplicateAndOrganizeActiveSheet() لتطابق ما يلي:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));

  // Sort all the data using column C (Price information).
  myRange = duplicateSheet.getRange("A3:D55");
  myRange.sort(3);
}
  1. حفظ الدالة وتشغيلها.

والآن، تتولى الدالة، بالإضافة إلى التنسيق السابق، ترتيب جميع البيانات في الجدول باستخدام معلومات السعر في العمود C:

a6cc9710245fae8d.png

يستخدم الرمز الجديد getRange(a1Notation) لتحديد نطاق جديد يغطي A3:D55 (الجدول بالكامل باستثناء رؤوس الأعمدة). وبعد ذلك يستدعي الرمز طريقة sort(sortSpecObj) لترتيب الجدول. هنا، المعلّمة sortSpecObj هي رقم العمود المطلوب استخدامه للترتيب. ترتّب الطريقة النطاق بحيث تنتقل قيم العمود المُشار إليها من الأدنى إلى الأعلى (القيم التصاعدية). يمكن أن تؤدي طريقة sort(sortSpecObj) إلى تنفيذ متطلبات ترتيب أكثر تعقيدًا، ولكنك لا تحتاج إليها هنا. يمكنك عرض كل الطرق المختلفة التي يمكنك من خلالها استدعاء نطاقات الترتيب في المستندات المرجعية للطريقة.

تهانينا، لقد أكملت جميع التدريبات بنجاح في الدرس التطبيقي حول الترميز. يراجع القسم التالي النقاط الأساسية في هذا الدرس التطبيقي حول الترميز ويعايِن الدرس التطبيقي التالي حول الترميز في قائمة التشغيل هذه.

7- الخلاصة

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

أنت مستعد للانتقال إلى الدرس التطبيقي التالي حول الترميز.

هل وجدت هذا الدرس التطبيقي مفيدًا؟

نعم لا

المواضيع التي تناولناها

  • كيفية تمثيل جداول البيانات والأوراق والنطاقات في "برمجة التطبيقات".
  • بعض الاستخدامات الأساسية للصفوف SpreadsheetApp وSpreadsheet وSheet وRange.

الخطوات التالية

يتناول الدرس التطبيقي التالي حول الترميز في قائمة التشغيل هذه كيفية قراءة البيانات وكتابتها وتعديلها في جدول بيانات.

ابحث عن الدرس التطبيقي التالي حول الترميز في التعامل مع البيانات.