5 وظائف نصية لأوراق Google تحتاج إلى معرفتها

تعد Google Sheets أداة جداول بيانات(Google Sheets) قوية قائمة على السحابة تتيح لك القيام بكل شيء تقريبًا يمكنك القيام به في Microsoft Excel . لكن القوة الحقيقية لـ Google Sheets هي ميزة Google Scripting التي تأتي معها.

البرمجة النصية لتطبيقات Google(Google Apps) هي أداة برمجة نصية في الخلفية لا تعمل فقط في جداول بيانات Google(in Google Sheets) ولكن أيضًا في مستندات Google و Gmail و Google Analytics وتقريبًا كل خدمة سحابية أخرى من Google . يتيح لك أتمتة تلك التطبيقات الفردية ، ودمج كل من هذه التطبيقات مع بعضها البعض.

ستتعلم في هذه المقالة كيفية البدء في البرمجة النصية لتطبيقات Google(Google Apps) ، وإنشاء نص برمجي أساسي في جداول بيانات Google(Google Sheets) لقراءة بيانات الخلية وكتابتها ، ووظائف البرنامج النصي لجداول بيانات Google الأكثر فاعلية.(Google Sheets)

كيفية إنشاء Google Apps Script(How to Create a Google Apps Script)

يمكنك البدء الآن في إنشاء أول نص برمجي لتطبيقات Google(Google Apps) من داخل جداول بيانات Google(Google Sheets)

للقيام بذلك ، حدد أدوات(Tools) من القائمة ، ثم محرر البرنامج النصي(Script Editor) .

يؤدي هذا إلى فتح نافذة محرر البرنامج النصي والتعيين الافتراضي لوظيفة تسمى myfunction () . هذا هو المكان الذي يمكنك فيه إنشاء Google Script(Google Script) واختباره .

لإعطائها لقطة ، حاول إنشاء وظيفة البرنامج النصي لجداول بيانات Google(Google Sheets) التي ستقرأ البيانات من خلية واحدة ، وتجري عملية حسابية عليها ، وتخرج كمية البيانات إلى خلية أخرى.

وظيفة الحصول على البيانات من خلية هي الدالتان getRange ()(getRange()) و getValue () . يمكنك تحديد الخلية بالصف والعمود. لذلك إذا كانت لديك قيمة في الصف 2 والعمود 1 (العمود A) ، فسيبدو الجزء الأول من البرنامج النصي كما يلي:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

هذا يخزن القيمة من تلك الخلية في متغير البيانات . (data)يمكنك إجراء عملية حسابية على البيانات ، ثم كتابة تلك البيانات إلى خلية أخرى. لذا فإن الجزء الأخير من هذه الوظيفة سيكون:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

عندما تنتهي من كتابة وظيفتك ، حدد رمز القرص للحفظ. 

في المرة الأولى التي تقوم فيها بتشغيل وظيفة نصية جديدة لجداول بيانات Google(Google Sheets) مثل هذه (عن طريق تحديد رمز التشغيل) ، ستحتاج إلى تقديم تفويض(Authorization) للبرنامج النصي ليتم تشغيله على حسابك في Google(Google Account) .

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

الآن بعد أن عرفت كيفية كتابة وظيفة نصية أساسية لتطبيقات Google(Google Apps) ، دعنا نلقي نظرة على بعض الوظائف الأكثر تقدمًا.

استخدم getValues ​​لتحميل المصفوفات(Use getValues To Load Arrays)

يمكنك نقل مفهوم إجراء العمليات الحسابية على البيانات في جدول البيانات مع البرمجة النصية إلى مستوى جديد باستخدام المصفوفات. إذا قمت بتحميل متغير في البرنامج النصي لتطبيقات Google(Google Apps) باستخدام getValues ​​، فسيكون المتغير عبارة عن مصفوفة يمكنها تحميل قيم متعددة من الورقة.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

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

في مثال جدول البيانات الخاص بنا ، يمكنك إجراء العمليات الحسابية على ثلاثة صفوف من البيانات على النحو التالي.

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

احفظ(Save) هذا البرنامج النصي وقم بتشغيله تمامًا كما فعلت أعلاه. ستلاحظ أنه تمت تعبئة جميع النتائج في العمود 2 في جدول البيانات.

ستلاحظ أن الإشارة إلى خلية وصف في متغير مصفوفة تختلف عن الإشارة إلى دالة getRange. 

تشير البيانات [i] [0](data[i][0]) إلى أبعاد الصفيف حيث يكون البعد الأول هو الصف والثاني هو العمود. كلاهما يبدأ من الصفر.

getRange(i+1, 2) إلى الصف الثاني عندما يكون i = 1 (نظرًا لأن الصف 1 هو الرأس) ، و 2 هو العمود الثاني حيث يتم تخزين النتائج.

استخدم appendRow لكتابة النتائج(Use appendRow To Write Results)

ماذا لو كان لديك جدول بيانات حيث تريد كتابة البيانات في صف جديد بدلاً من عمود جديد؟

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

كمثال ، قم بعمل دالة يتم حسابها من 1 إلى 10 وإظهار عداد بمضاعفات 2 في عمود العداد .(Counter)

ستبدو هذه الوظيفة على النحو التالي:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

فيما يلي النتائج عند تشغيل هذه الوظيفة.

معالجة موجزات RSS باستخدام URLFetchApp(Process RSS Feeds With URLFetchApp)

يمكنك الجمع بين وظيفة البرنامج النصي لجداول بيانات Google السابقة و (Google Sheets)URLFetchApp لسحب موجز RSS من أي موقع ويب ، وكتابة صف في جدول بيانات لكل مقالة تم نشرها مؤخرًا على موقع الويب هذا.

هذه في الأساس طريقة DIY لإنشاء جدول بيانات قارئ موجز RSS الخاص بك !

البرنامج النصي للقيام بذلك ليس معقدًا جدًا أيضًا.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

كما ترى ، يسحب Xml.parse كل عنصر من موجز RSS ويفصل كل سطر في العنوان والرابط والتاريخ والوصف. 

باستخدام وظيفة appendRow ، يمكنك وضع هذه العناصر في أعمدة مناسبة لكل عنصر في موجز RSS .

سيبدو الإخراج في الورقة كما يلي:

بدلاً من تضمين عنوان URL(URL) لخلاصة RSS في البرنامج النصي ، يمكن أن يكون لديك حقل في جدولك يحتوي على عنوان URL(URL) ، ثم يكون لديك أوراق متعددة - واحدة لكل موقع ويب تريد مراقبته.

(Concatenate Strings)سلاسل متسلسلة وإضافة حرف (Add)إرجاع(Carriage Return)

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

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

سترغب في إنشاء سطر الموضوع ونص نص البريد الإلكتروني من خلال تحليل جميع المعلومات معًا من نفس مصفوفة "العناصر" التي استخدمتها لكتابة بيانات RSS في جدول البيانات. 

للقيام بذلك ، قم بتهيئة الموضوع والرسالة بوضع الأسطر التالية قبل حلقة For "العناصر".

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

ثم ، في نهاية حلقة for "items" (مباشرة بعد وظيفة appendRow) ، أضف السطر التالي.

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

سوف يربط الرمز "+" كل العناصر الأربعة معًا متبوعة بـ "" لإرجاع أول سطر بعد كل سطر. في نهاية كل كتلة بيانات عنوان ، سترغب في إرجاع حرفين لهيكل بريد إلكتروني منسق بشكل جيد.

بمجرد معالجة جميع الصفوف ، يحتفظ المتغير "body" بسلسلة رسائل البريد الإلكتروني بالكامل. أنت الآن جاهز لإرسال البريد الإلكتروني!

كيفية إرسال بريد إلكتروني في برمجة تطبيقات Google(How To Send Email In Google Apps Script)

سيكون القسم التالي من Google Script هو إرسال "الموضوع" و "النص الأساسي" عبر البريد الإلكتروني. القيام بذلك في Google Script أمر سهل للغاية.

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

يعد تطبيق MailApp(MailApp) فئة ملائمة للغاية داخل البرامج النصية لتطبيقات Google(Google Apps) والتي تمنحك الوصول إلى خدمة البريد الإلكتروني لحساب Google الخاص بك لإرسال رسائل البريد الإلكتروني أو تلقيها. بفضل هذا السطر الفردي بوظيفة الإرسال ، يتيح لك إرسال أي بريد إلكتروني(send any email) باستخدام عنوان البريد الإلكتروني وسطر الموضوع والنص الأساسي فقط.

هذا ما سيبدو عليه البريد الإلكتروني الناتج. 

إن الجمع بين القدرة على استخراج موجز RSS(RSS) لموقع الويب وتخزينه في جدول بيانات Google(Google Sheet) وإرساله إلى نفسك مع تضمين روابط URL ، يجعل من السهل جدًا متابعة أحدث محتوى لأي موقع ويب.

هذا مجرد مثال واحد على القوة المتوفرة في البرامج النصية لتطبيقات Google(Google Apps) لأتمتة الإجراءات ودمج خدمات السحابة المتعددة.



About the author

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



Related posts