هناك العديد من الأدوات المتوفرة لعلماء البيانات لإجراء تحليلات البيانات الضخمة، ولكن في نهاية اليوم، أليس عليك تبرير هذه النتائج للإدارة؟ هناك العديد من الأرقام على الورقة أو في قاعدة البيانات التي لا يمكن تقديمها إلى الجهات المعنية الأساسية. يستفيد هذا الدرس التطبيقي البرمجي لترميز برمجة تطبيقات Google من زوج من منصات مطوّري برامج GoogleG Suite وGoogle Cloud Platform (GCP) لمساعدتك على إكمال المرحلة النهائية.
تتيح لك أدوات المطوّرين في Google Cloud إجراء تحليل شامل للبيانات، ثم الحصول على هذه النتائج ووضعها في جدول بيانات وإنشاء عرض تقديمي باستخدام هذه البيانات، ما يوفّر مرحلة أكثر ملاءمةً ليتم عرض النتائج في الإدارة. يتناول هذا الدرس التطبيقي واجهة برمجة تطبيقات BigQuery في Google Cloud Platform (بما في ذلك خدمة متقدّمة لبرمجة التطبيقات) وخدمات النصوص البرمجية للتطبيقات المدمجة من أجل جداول بيانات Google والعروض التقديمية من Google.
التحفيز/الفن السابق
استُلهم نموذج التطبيق في هذا الدرس التطبيقي من نماذج الرموز الأخرى هذه...
- نموذج تطبيق BigQuery في خدمة النص البرمجي من Google Apps ومفتوح المصدر على GitHub
- نموذج التطبيق المعروض في فيديو مطوّري برامج إنشاء العروض التقديمية من بيانات جداول البيانات ونشره في مشاركة المدونة هذه
- نموذج التطبيق المعروض في الدرس التطبيقي حول الترميز الخاص بـ "العروض التقديمية من Google"
على الرغم من أن نموذج تطبيق درس تطبيقي حول ترميز واجهة برمجة التطبيقات يتضمّن أيضًا BigQuery و"العروض التقديمية من Google"، إلا أنه يختلف عن نموذج تطبيق الدروس التطبيقي هذا في عدّة طرق:
- مقارنة بين تطبيق Node.js وتطبيق برمجة التطبيقات
- يتم استخدام واجهات برمجة تطبيقات REST أثناء استخدامنا لخدمات برمجة التطبيقات
- يستخدم Google Drive ولا يستخدم جداول بيانات Google، بينما يستخدم هذا التطبيق جداول البيانات وليس Drive.
في هذا الدرس التطبيقي حول الترميز، أردنا جمع أكبر قدر من التقنيات معًا في تطبيق واحد مع عرض الميزات وواجهات برمجة التطبيقات من Google Cloud بطريقة تشبه بشكلٍ أفضل حالة الاستخدام على أرض الواقع. والهدف منها هو إلهامك لاستخدام مخيلتك والنظر في تعزيز كل من Google Cloud Platform وGoogle Suuite لحل المشاكل الصعبة بالنسبة إلى مؤسستك أو عملائك.
ما ستتعرَّف عليه
- كيفية استخدام "برمجة تطبيقات Google" مع خدمات Google المتعددة (Google Cloud Platform و &G Suite)
- كيفية استخدام Google BigQuery لإجراء تحليل كبير للبيانات
- كيفية إنشاء "جدول بيانات Google" وتعبئة البيانات فيه
- كيفية إنشاء رسم بياني جديد في "جداول بيانات Google"
- كيفية نقل الرسوم البيانية والبيانات من "جداول بيانات Google" إلى عرض تقديمي في "العروض التقديمية من Google"
الأشياء التي تحتاج إليها
- اتصال بالإنترنت ومتصفح ويب
- حساب Google (قد تحتاج حسابات G Suite إلى موافقة المشرف)
- مهارات JavaScript الأساسية
- قد تكون معرفة تطوير "برمجة التطبيقات" مفيدة ولكنها غير مطلوبة.
كيف ستستخدم هذا الدرس التطبيقي/البرنامج التعليمي؟
كيف تقيّم تجربة أدوات مطوّري برامج G Suite وواجهات برمجة التطبيقات؟
كيف تقيّم تجربتك مع "برمجة التطبيقات" تحديدًا؟
كيف تقيّم تجربة أدوات مطوّري برامج Google Cloud Platform وواجهات برمجة التطبيقات؟
الآن وبعد أن تعرفت على موضوع هذا الدرس التطبيقي حول الترميز، ما الذي ستفعله بالضبط؟
- خذ نموذجًا لبرمجة التطبيقات وBigQuery الحاليًا واعمل عليه
- من هذا النموذج، تعرّف على كيفية إرسال طلب بحث إلى BigQuery والحصول على نتائجه
- إنشاء "جدول بيانات Google" وملء النتائج من BigQuery إليه
- تعديل الرمز قليلاً لتغيير البيانات المعروضة قليلاً وإضافتها إلى جدول البيانات
- يمكنك استخدام خدمة "جداول بيانات Google" في "برمجة تطبيقات Google" لإنشاء رسم بياني للبيانات من BigQuery
- استخدام خدمة "العروض التقديمية من Google" لإنشاء عرض تقديمي جديد
- إضافة عنوان وعنوان فرعي إلى شريحة العنوان التلقائية التي يتم إنشاؤها تلقائيًا لكل مجموعات الشرائح الجديدة
- إنشاء شريحة جديدة باستخدام جدول بيانات، ثم استيراد خلايا بيانات "جدول البيانات" إلى جدول البيانات
- إضافة شريحة جديدة أخرى وإضافة الرسم البياني لجدول البيانات إليها
لنبدأ ببعض المعلومات الأساسية عن برمجة التطبيقات وBigQuery و"جداول بيانات Google" و"العروض التقديمية من Google".
برمجة تطبيقات Google وBigQuery
برمجة تطبيقات Google هي منصة تطوير G Suite تعمل على مستوى أعلى من استخدام Google REST APIs. وهو بيئة تطوير واستضافة تطبيقات بدون خادم يمكن الوصول إليها من خلال مجموعة كبيرة من مستويات مهارات مطوّري البرامج. في جملة واحدة، "برمجة التطبيقات" هي وقت تشغيل JavaScript بدون خادم لتشغيل G Suite تلقائيًا والإضافة والدمج.
وهي عبارة عن لغة JavaScript من جهة الخادم، تشبه Node.js، ولكنها تركز على الدمج الدقيق مع G Suite وخدمات Google الأخرى بدلاً من استضافة التطبيقات السريعة غير المتزامنة المستندة إلى أحداث. ويتميّز الهاتف ببيئة تطوير قد تختلف تمامًا عن تلك التي اعتدت عليها. باستخدام "برمجة التطبيقات"، يمكنك:
- التطوير في محرِّر رموز مستند إلى المتصفِّح، ولكن يمكن اختيار تطويره محليًا إذا كنت تستخدم
clasp
، وهي أداة نشر سطر الأوامر في "برمجة تطبيقات Google". - رمز في إصدار مُخصَّص من JavaScript مخصّص للوصول إلى G Suite وخدمات Google الأخرى أو الخدمات الخارجية (عبر "برمجة تطبيقات Google"
URLfetch
أو خدماتJdbc
) - يمكن تجنُّب كتابة رمز التفويض لأن "برمجة التطبيقات" تتعامل معه نيابةً عنك.
- لست بحاجة إلى استضافة تطبيقك، لأنه يعمل لأنه يعمل على خوادم Google في السحابة الإلكترونية.
ملاحظة: في الغالب، تقع خارج نطاق هذا الدرس التطبيقي حول تعليم "برمجة التطبيقات". هناك الكثير من الموارد على الإنترنت لمساعدتك في هذا الأمر. تتضمن الوثائق الرسمية نظرة عامة حول عمليات البدء السريع والبرامج التعليمية والفيديوهات أيضًا. وأخيرًا، لا تنسَ الدرس التطبيقي حول الترميز حول "برمجة تطبيقات Google"، والذي يجب إكماله قبل بدء هذا الدرس التطبيقي.
واجهات برمجة التطبيقات مع تقنيات Google الأخرى بطريقتين مختلفتين:
- خدمة مدمجة/مدمجة مع المحتوى
- خدمة متقدمة
توفِّر خدمة مضمَّنة طرقًا عالية المستوى يمكنك استخدامها للوصول إلى بيانات منتجات G Suite أو Google، أو طرق مساعدة أخرى مفيدة. الخدمة المتقدمة هي مجرد برنامج رفيع المستوى حول واجهة برمجة تطبيقات G Suite أو Google REST. توفّر الخدمات المتقدّمة تغطية شاملة لواجهة برمجة تطبيقات REST، ويمكن أن تقدّم في كثير من الأحيان إجراءات أكثر من الخدمات المضمّنة، ولكنها تتطلب مزيدًا من التعقيد (الرمز) في حين أنّ استخدامها يبقى أسهل من واجهة برمجة تطبيقات REST نفسها. يجب أيضًا تفعيل الخدمات المتقدمة لمشروع نص برمجي قبل استخدامها.
إن أمكن، يفضّل مطوّرو البرامج الحصول على خدمة مدمجة لأنّها أسهل في الاستخدام وتؤدي إلى رفع الأثقال مقارنةً بالخدمات المتقدّمة، ولكن قد لا تتوفّر خدمات مضمّنة في بعض واجهات برمجة تطبيقات Google، لذا قد تكون الخدمة المتقدمة هي الخيار الوحيد. Google BigQuery هو مثال على ذلك... لا تتوفّر خدمة مضمّنة، ولكن تتوفّر خدمة BigQuery متقدمة . (أفضل من عدم الخدمة، أليس كذلك؟) إذا كنت مستخدمًا جديدًا لأداة BigQuery، فهي خدمة Google Cloud Platform التي تسمح لك بتنفيذ طلبات بحث بسيطة (أو معقدة) على مجموعات بيانات كبيرة للغاية، على سبيل المثال، ترتيبًا لعدة تيرابايت، مع أنه لا يزال بإمكانك تقديم النتائج في ثوانٍ.
الوصول إلى "جداول بيانات Google" و"العروض التقديمية من Google" من "برمجة تطبيقات Google"
على عكس BigQuery، تشتمل كل من جداول بيانات Google والعروض التقديمية على خدمات مدمجة (بالإضافة إلى الخدمات المتقدمة التي لا تستخدمها إلا للوصول إلى الميزات المتوفرة فقط في واجهة برمجة التطبيقات). يمكنك الاطّلاع على مستندات خدمتَي جداول بيانات Google والعروض التقديمية من Google المُدمجتَين قبل الانتقال إلى الرمز. تتوفّر أيضًا مستندات للخدمات المتقدّمة، حيث يتم عرضها هنا على جداول بيانات Google والعروض التقديمية من Google على التوالي.
مقدمة
سنتناول القليل من هذا الدرس التطبيقي حول كيفية إنجاز هذه المهمة الأولى. في الواقع، بعد الانتهاء من ذلك، ستكون قد أكملت نصف الدرس التطبيقي حول الترميز. مقسمة إلى عدة أقسام فرعية، ستقوم بما يلي:
- بدء مشروع جديد في "برمجة تطبيقات Google"
- تفعيل الوصول إلى خدمة BigQuery المتقدمة
- الانتقال إلى محرِّر برامج التطوير وإدخال رمز مصدر التطبيق
- تنفيذ عملية تفويض التطبيق (OAuth2)
- تشغيل التطبيق الذي يرسل طلبًا إلى BigQuery
- عرض جدول بيانات Google جديد تمامًا تم إنشاؤه باستخدام نتائج BigQuery
الإعداد
- أ) أنشئ مشروع "برمجة تطبيقات Google" من خلال الانتقال إلى
script.google.com
. هناك خطوط منتجات G Suite مختلفة، وقد تختلف كيفية إنشاء مشروع جديد وفقًا للإصدار الذي تستخدمه. إذا كنت تستخدم حساب Gmail حديثًا وكنت حديث العهد بتطوير المشاريع، ستظهر لك شاشة فارغة مع زر لإنشاء مشروعك الأول:
ب) بخلاف ذلك، قد ترى جميع مشاريعك وزر +جديد كبير في أعلى اليمين، لذا انقر عليه.
ج) إذا لم يظهر أي مما سبق، فقد تظهر الشاشة أدناه. إذا كان الأمر كذلك، ابحث عن رمز قائمة هامبرغر في أعلى يمين الصفحة وانقر على +نص برمجي جديد.
د) بالنسبة إلى الأشخاص الذين يفضلون استخدام سطر الأوامر. أداتك هي clasp
، على وجه التحديد، عليك تنفيذ الأمر clasp create
.
هـ) الطريقة النهائية لإنشاء مشروع نص برمجي جديد هي الانتقال إلى رابط الاختصار: https://script.google.com/create.
- بغض النظر عن الأسلوب الذي استخدمته لبدء مشروع جديد، الخلاصة هي أنه من المفترض أن يتم إسقاطك في محرر رموز برمجة التطبيقات، وهي شاشة تبدو كما يلي:
- انقر على ملف > حفظ وأدخِل اسمًا لمشروعك.
- عليك بعد ذلك إنشاء مشروع على Google Cloud Console حتى تتمكّن من تنفيذ طلبات BigQuery.
- أنشئ مشروعًا جديدًا، واختَر اسمًا له، واختَر حساب الفوترة، ثم انقر على إنشاء.
- عند اكتمال إنشاء المشروع، يظهر إشعار في أعلى يسار الصفحة. انقر على الإدخال Create Project: <Project Name> لفتح المشروع.
- انقر على رمز القائمة
في أعلى اليمين وانتقل إلى APIs & Services > Credentials. انقر على علامة التبويب شاشة موافقة OAuth (رابط مباشر).
- في الحقل اسم التطبيق، أدخِل "Big Data Codelab"؛ وانقر على الزر Save (حفظ) في أسفل الصفحة.
- انقر على رمز النقاط الثلاث
في أعلى يسار الصفحة لتوسيع القائمة واختيار إعدادات المشروع (رابط مباشر).
- انسَخ القيمة المُدرَجة ضمن رقم المشروع. (هناك حقل منفصل لرقم تعريف المنتج وسنستخدمه لاحقًا في الدرس التطبيقي حول الترميز).
- ارجع إلى "محرِّر برمجة التطبيقات"، انقر على الموارد >؛ مشروع Cloud Platform.
- أدخِل رقم المشروع في مربّع النص، ثم انقر على تحديد المشروع. انقر على تأكيد عندما يُطلب منك ذلك.
- عند الانتهاء، انقر على الزر إغلاق لإغلاق مربع الحوار.
- الآن بعد أن أعددتَ مشروعًا جديدًا، عليك تفعيل خدمة BigQuery المتقدمة، لذا اسحب الموارد -> خدمات Google المتقدمة وفعِّل بت واجهة برمجة تطبيقات BigQuery.
- ملاحظة في الجزء السفلي: "يجب أيضًا تفعيل هذه الخدمات في &لوحة بيانات واجهة برمجة التطبيقات في Google Cloud Platform&"، لذا انقر على هذا الرابط الذي يفتح علامة تبويب متصفّح أخرى لوحدة تحكم مطوّري البرامج أو ""devconsole"؛
- في devconsole، انقر على الزر +تفعيل واجهات برمجة التطبيقات والخدمات في أعلى الصفحة، وابحث عن "bigquery", واختَر واجهة برمجة تطبيقات BigQuery (وليس واجهة برمجة التطبيقات لنقل بيانات BigQuery)، ثم انقر على تفعيل لتفعيلها. اترك علامة تبويب المتصفح هذه مفتوحة.
ملاحظة: بعد تفعيل واجهة برمجة التطبيقات، قد تظهر لك ملاحظة على هذه الصفحة تذكر شيئًا مثل، "؛ لاستخدام واجهة برمجة التطبيقات هذه، ستحتاج إلى إنشاء بيانات اعتماد...،"، ولكن لا تقلق بشأن ذلك في الوقت الحالي - سيتولى "برمجة التطبيقات" تنفيذ هذه الخطوة نيابةً عنك. - ارجع إلى علامة تبويب متصفح محرر الرموز، وما زلت في قائمة "خدمات Google المتقدمة"، لذا انقر على حسنًا لإغلاق مربع الحوار، وتركك في محرر الرموز. انقر على اسم المشروع في الجزء العلوي، وسَمّه كما تشاء، أو "؛عرض توضيحي خاص بـ BigQuery"، أو ما شابه ذلك — أطلقنا على الميزتَين الخاصتَين بنا على النحو التالي:
أنت الآن على استعداد لإدخال رمز الطلب، ومتابعة عملية التفويض، والحصول على أول ظهور لهذا التطبيق.
تحميل التطبيق وتشغيله
- انسخ الشفرة في المربّع أدناه والصقها في كل محرر الرموز باستخدامها:
// Filename for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud API project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');
/**
* Runs a BigQuery query; puts results into Sheet. You must enable
* the BigQuery advanced service before you can run this code.
* @see http://developers.google.com/apps-script/advanced/bigquery#run_query
* @see http://github.com/googleworkspace/apps-script-samples/blob/main/advanced/bigquery.gs
*
* @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
* @see http://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
*/
function runQuery() {
// Replace sample with your own BigQuery query.
var request = {
query:
'SELECT ' +
'LOWER(word) AS word, ' +
'SUM(word_count) AS count ' +
'FROM [bigquery-public-data:samples.shakespeare] ' +
'GROUP BY word ' +
'ORDER BY count ' +
'DESC LIMIT 10'
};
var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
var jobId = queryResults.jobReference.jobId;
// Wait for BQ job completion (with exponential backoff).
var sleepTimeMs = 500;
while (!queryResults.jobComplete) {
Utilities.sleep(sleepTimeMs);
sleepTimeMs *= 2;
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
}
// Get all results from BigQuery.
var rows = queryResults.rows;
while (queryResults.pageToken) {
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
pageToken: queryResults.pageToken
});
rows = rows.concat(queryResults.rows);
}
// Return null if no data returned.
if (!rows) {
return Logger.log('No rows returned.');
}
// Create the new results spreadsheet.
var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
var sheet = spreadsheet.getActiveSheet();
// Add headers to Sheet.
var headers = queryResults.schema.fields.map(function(field) {
return field.name.toUpperCase();
});
sheet.appendRow(headers);
// Append the results.
var data = new Array(rows.length);
for (var i = 0; i < rows.length; i++) {
var cols = rows[i].f;
data[i] = new Array(cols.length);
for (var j = 0; j < cols.length; j++) {
data[i][j] = cols[j].v;
}
}
// Start storing data in row 2, col 1
var START_ROW = 2; // skip header row
var START_COL = 1;
sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
}
يمكنك الآن حفظ الملف الذي أنشأته للتو ولكن إعادة تسميته من Code.gs
إلى bq-sheets-slides.js
. ما الذي يفعله هذا الرمز؟ لقد أخبرناك من قبل بأنه طلب بحث في BigQuery ويكتب النتائج في جدول بيانات Google جديد، ولكن ما المقصود بطلب البحث هذا؟ يمكنك رؤيته بالقرب من أعلى runQuery()
:
SELECT
LOWER(word) AS word,
SUM(word_count) AS count
FROM [bigquery-public-data:samples.shakespeare]
GROUP BY word
ORDER BY count
DESC LIMIT 10
يفحص طلب البحث هذا أعمال شكسبير'؛ التي تُعدّ جزءًا من مجموعة بيانات BigQuery's، وينتج أكثر 10 كلمات ظهورًا في جميع أعماله، مرتبةً تنازليًا حسب الرواج. تخيّل كيف سيكون الأمر ممتعًا للقيام بذلك يدويًا، ويجب أن تكون لديك فكرة عن مدى فائدة BigQuery.
- نحن مستعدون تقريبًا لتجربة هذه العملية. وكما ترى بالقرب من أعلى مقتطف الرمز هذا، يجب إدراج رقم تعريف مشروع صالح، لذا نحتاج إلى إضافة رقمك إلى رمز التطبيق. وللحصول على ذلك، ارجع إلى نافذة المتصفّح أو علامة التبويب التي تتضمّن صفحة Developer Console. (طلبنا منك تركه مفتوحًا، هل تتذكر؟)
- تتوفّر أداة اختيار القائمة المنسدلة (
) في أعلى يمين الصورة الرمزية لحسابك على Google، ويمكنك النقر عليها واختيار إعدادات المشروع. سترى اسم المشروع ورقم تعريفه ورقمه. انسَخ رقم تعريف المشروع وحدِّد المتغيّر
PROJECT_ID
في أعلىbq-sheets-slides.js
على القيمة التي تحصل عليها من Play Console. ملاحظة: إذا أصبح محدِّد القائمة ثابتًا ولا يعمل، يمكنك إعادة تحميل الصفحة. - تتوفر العبارة
if
لمنع التطبيق من التقدم بعد ذلك بدون رقم تعريف المشروع. بعد الانتهاء من إضافة الخاص بك وحفظ الملف وتنفيذ الرمز من خلال الانتقال إلى شريط القوائم واختيار تشغيل >؛ تشغيل الوظيفة >؛ تنفيذ طلب البحث، النقر على مراجعة أذونات مربع الحوار، هذا التطبيق لم يتم إثبات ملكيته، وفي ما يلي ملف GIF متحرك (لتطبيق آخر) يوضح الخطوات القليلة التالية: - عند طلب مراجعة الأذونات، سيتم تقديم مربع حوار جديد لك كما هو موضح أعلاه. اختَر حساب Google الصحيح الذي سيُشغِّل النص البرمجي، واختَر إعدادات متقدّمة، وانتقِل للأسفل، ثم انقر على "&انتقال" إلى "&اسم مشروعك>؛ (غير آمن)"&، للوصول إلى شاشة تفويض تطبيق OAuth2. (يمكنك الاطلاع على مزيد من المعلومات حول عملية التحقق للتعرف على سبب وضع هذه الشاشة بينك وبين مربع حوار تفويض OAuth2 أدناه.)
ملاحظة: بعد تفويض التطبيق، لن تحتاج إلى تكرار هذه العملية مع كل عملية تنفيذ. لن تظهر لك شاشة الحوار هذه مرة أخرى في "البرنامج التعليمي 3" المزيد حتى تصل إلى مهمة 3 هذه، حيث تطلب إذن المستخدم لإنشاء العروض التقديمية في "العروض التقديمية من Google" وإدارتها. - بعد النقر على سماح في نافذة مربع حوار OAuth2، يبدأ تشغيل النص البرمجي... سترى'؛ مربع حوار أصفر فاتح في الجزء العلوي. وهو يعمل بسرعة إلى حد ما، لذا قد لا تلاحظ أن التطبيق قيد التشغيل أو أن التنفيذ قد اكتمل.
- يختفي مربع الحوار هذا بعد الانتهاء منه، لذلك إذا لم تراه، انتهى الأمر على الأرجح، لذا انتقِل إلى Google Drive (
drive.google.com
) وابحث عن جدول بيانات Google جديد باسم "الكلمات الأكثر شيوعًا" في جميع أعمال شكسبير، أو ما خصّصته للمتغيّرQUERY_NAME
: - افتح جدول البيانات، وسيظهر لك 10 صفوف من الكلمات وإجمالي عدد الصفوف مرتَّبة تنازليًا:
ملخّص المهمة 1
تعرّف على ما حدث... لقد نفّذت بعض الرموز التي استُخدمت لجميع مهام "شكسبير" (ليس مقدارًا كبيرًا من البيانات، وبصورة أكبر من النص الذي يمكنك مسحه بسهولة على كل كلمة في كل عملية تشغيل، مع إدارة عدد من هذه الكلمات وترتيبها تنازليًا). ولم تطلب من BigQuery تنفيذ ذلك نيابةً عنك فحسب، بل تمكّنت أيضًا من استخدام الخدمة المضمّنة في "برمجة التطبيقات" لـ "جداول بيانات Google" لوضع هذه البيانات فيها لسهولة استهلاكها.
يمكن أيضًا العثور على رمز bq-sheets-slides.js
(اسم الملف المُختار) الذي لصقته أعلاه (باستثناء PROJECT_ID
والذي يجب أن يتضمن معرِّف مشروع حقيقيًا) في مجلد step1
في ترميز GitHub هذا على github.com/googlecodelabs/bigquery-sheets-slides. كان الرمز مصدر إلهام كبيرًا للمثال الأصلي في صفحة الخدمات المتقدّمة في BigQuery الذي كان يعرض طلب بحث مختلفًا قليلاً... ما هي الكلمات الأكثر شيوعًا التي استخدمها "شكسبير" والتي تضم 10 أحرف أو أكثر. يمكنك أيضًا الاطّلاع على هذا النموذج في مرجع GitHub.
إذا كنت مهتمًا بطلبات البحث الأخرى التي يمكنك تجربتها مقابل أعمال "شكسبير" أو جداول البيانات العامة الأخرى، اطّلِع على صفحة الويب هذه بالإضافة إلى هذه الصفحة. بصرف النظر عن طلب البحث الذي تستخدمه، يمكنك دائمًا اختبار الطلب في وحدة تحكم BigQuery قبل تشغيله في "برمجة التطبيقات". تتوفر واجهة مستخدم BigQuery لمطوّري البرامج على الرابط bigquery.cloud.google.com. على سبيل المثال، هنا، سيظهر طلب البحث باستخدام واجهة مستخدم BigQuery:
على الرغم من أن الخطوات المذكورة أعلاه تستفيد من محرر رموز برمجة التطبيقات، يمكنك أيضًا اختيار التطوير محليًا عبر سطر الأوامر. إذا أردت، أنشئ نصًا برمجيًا باسم bq-sheets-slides.js
، والصق الرمز أعلاه فيه، ثم حمِّله إلى Google باستخدام الأمر clasp push
. (إذا فاتتك هذه المعلومات في وقت سابق، إليك الرابط مرة أخرى إلى clasp
وكيفية استخدامها).
الغرض من runQuery()
هو التحدث إلى BigQuery وإرسال نتائجه إلى جدول بيانات. والآن نحتاج إلى إنشاء رسم بياني بالبيانات. لننشئ دالة جديدة تُسمى createColumnChart()
تُطلق طريقة newChart()
على جدول البيانات.
- إنشاء رسم بياني. أضِف نص
createColumnChart()
المميّز أدناه إلىbq-sheets-slides.js
بعدrunQuery()
مباشرةً. وتظهر هذه الورقة مع البيانات وتطلب رسمًا بيانيًا عموديًا يتضمن جميع البيانات. يبدأ نطاق البيانات في الخلية A2 لأن الصف الأول يحتوي على رؤوس الأعمدة، وليس البيانات.
/**
* Uses spreadsheet data to create columnar chart.
* @param {Spreadsheet} Spreadsheet containing results data
* @returns {EmbeddedChart} visualizing the results
* @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
*/
function createColumnChart(spreadsheet) {
// Retrieve the populated (first and only) Sheet.
var sheet = spreadsheet.getSheets()[0];
// Data range in Sheet is from cell A2 to B11
var START_CELL = 'A2'; // skip header row
var END_CELL = 'B11';
// Place chart on Sheet starting on cell E5.
var START_ROW = 5; // row 5
var START_COL = 5; // col E
var OFFSET = 0;
// Create & place chart on the Sheet using above params.
var chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(sheet.getRange(START_CELL + ':' + END_CELL))
.setPosition(START_ROW, START_COL, OFFSET, OFFSET)
.build();
sheet.insertChart(chart);
}
- عرض جدول البيانات. في ما سبق، يحتاج
createColumnChart()
إلى كائن جدول البيانات، لذا علينا تحديثrunQuery()
لعرض الكائنspreadsheet
حتى نتمكّن من تمريره إلىcreateColumnChart()
. بعد تسجيل الإنشاء الناجح لجدول بيانات Google، يمكنك عرض الكائنspreadsheet
في نهايةrunQuery()
، مباشرةً بعد سطر السجل:
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
// NEW: Return the spreadsheet object for later use.
return spreadsheet;
}
- القيادة
createBigQueryPresentation()
الدالة. يُعدّ الفصل بين وظائف إنشاء BigQuery والرسم البياني منطقيًا. لنبدأ الآن في إنشاء وظيفةcreateBigQueryPresentation()
لتعزيز التطبيق، من خلال طلب كلٍ منrunQuery()
وcreateColumnChart()
. ويجب أن يظهر الرمز الذي تضيفه على النحو التالي:
/**
* Runs a BigQuery query, adds data and a chart in a Sheet.
*/
function createBigQueryPresentation() {
var spreadsheet = runQuery();
createColumnChart(spreadsheet);
}
- استخدام الرموز مرة أخرى بشكل أكبر: لقد اتّخذت خطوتَين مهمتَين أعلاه: عرض كائن جدول البيانات وإنشاء دالة قيادة. ماذا لو أراد أحد الزملاء إعادة استخدام
runQuery()
ولا يريد تسجيل عنوان URL؟ لجعلrunQuery()
أكثر وضوحًا في الاستخدام العام، يجب نقل سطر السجل هذا. ما هو أفضل مكان لنقل العنصر؟ إذا خمنتcreateBigQueryPresentation()
، ستكون صحيحًا! بعد نقل سطر السجل، يجب أن يظهر على النحو التالي:
/**
* Runs a BigQuery query, adds data and a chart in a Sheet.
*/
function createBigQueryPresentation() {
var spreadsheet = runQuery();
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); // MOVED HERE
createColumnChart(spreadsheet);
}
مع هذه التغييرات أعلاه (مرة أخرى باستثناء PROJECT_ID
)، من المفترض أن يظهر bq-sheets-slides.js
الآن على النحو التالي (وتتوفر أيضًا في مجلد step2
من تقرير GitHub):
// Filename for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud API project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');
/**
* Runs a BigQuery query; puts results into Sheet. You must enable
* the BigQuery advanced service before you can run this code.
* @see http://developers.google.com/apps-script/advanced/bigquery#run_query
* @see http://github.com/googleworkspace/apps-script-samples/blob/main/advanced/bigquery.gs
*
* @returns {Sheet} Returns a sheet with results
* @see http://developers.google.com/apps-script/reference/spreadsheet/sheet
*/
function runQuery() {
// Replace sample with your own BigQuery query.
var request = {
query:
'SELECT ' +
'LOWER(word) AS word, ' +
'SUM(word_count) AS count ' +
'FROM [bigquery-public-data:samples.shakespeare] ' +
'GROUP BY word ' +
'ORDER BY count ' +
'DESC LIMIT 10'
};
var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
var jobId = queryResults.jobReference.jobId;
// Wait for BQ job completion (with exponential backoff).
var sleepTimeMs = 500;
while (!queryResults.jobComplete) {
Utilities.sleep(sleepTimeMs);
sleepTimeMs *= 2;
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
}
// Get all results from BigQuery.
var rows = queryResults.rows;
while (queryResults.pageToken) {
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
pageToken: queryResults.pageToken
});
rows = rows.concat(queryResults.rows);
}
// Return null if no data returned.
if (!rows) {
return Logger.log('No rows returned.');
}
// Create the new results spreadsheet.
var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
var sheet = spreadsheet.getActiveSheet();
// Add headers to Sheet.
var headers = queryResults.schema.fields.map(function(field) {
return field.name.toUpperCase();
});
sheet.appendRow(headers);
// Append the results.
var data = new Array(rows.length);
for (var i = 0; i < rows.length; i++) {
var cols = rows[i].f;
data[i] = new Array(cols.length);
for (var j = 0; j < cols.length; j++) {
data[i][j] = cols[j].v;
}
}
// Start storing data in row 2, col 1
var START_ROW = 2; // skip header row
var START_COL = 1;
sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);
// Return the spreadsheet object for later use.
return spreadsheet;
}
/**
* Uses spreadsheet data to create columnar chart.
* @param {Spreadsheet} Spreadsheet containing results data
* @returns {EmbeddedChart} visualizing the results
* @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
*/
function createColumnChart(spreadsheet) {
// Retrieve the populated (first and only) Sheet.
var sheet = spreadsheet.getSheets()[0];
// Data range in Sheet is from cell A2 to B11
var START_CELL = 'A2'; // skip header row
var END_CELL = 'B11';
// Place chart on Sheet starting on cell E5.
var START_ROW = 5; // row 5
var START_COL = 5; // col E
var OFFSET = 0;
// Create & place chart on the Sheet using above params.
var chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(sheet.getRange(START_CELL + ':' + END_CELL))
.setPosition(START_ROW, START_COL, OFFSET, OFFSET)
.build();
sheet.insertChart(chart);
}
/**
* Runs a BigQuery query, adds data and a chart in a Sheet.
*/
function createBigQueryPresentation() {
var spreadsheet = runQuery();
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
createColumnChart(spreadsheet);
}
احفظ الملف، ثم انتقِل للأعلى في أعلى محرِّر الرموز وبدِّل لتنفيذ createBigQueryPresentation()
بدلاً من runQuery()
. بعد تشغيله، ستحصل على "جدول بيانات Google" آخر، ولكن هذه المرة، يظهر رسم بياني في "جدول البيانات" بجانب البيانات:
يتضمّن الجزء الأخير من الدرس التطبيقي حول الترميز إنشاء عرض تقديمي جديد في "العروض التقديمية من Google" وملء العنوان والعنوان الفرعي في شريحة العنوان، ثم إضافة شريحتَين جديدتَين، واحدة لكل خلية من خلايا البيانات وأخرى للرسم البياني.
- إنشاء مجموعة شرائح. سيتم تنفيذ جميع أعمال مجموعة الشرائح في
createSlidePresentation()
والتي سنضيفها إلىbq-sheets-slides.js
بعدcreateColumnChart()
مباشرة. لنبدأ بإنشاء مجموعة شرائح جديدة، ثم أضِف عنوانًا وعنوانًا فرعيًا إلى شريحة العنوان التلقائية التي نحصل عليها مع جميع العروض التقديمية الجديدة.
/**
* Create presentation with spreadsheet data & chart
* @param {Spreadsheet} Spreadsheet with results data
* @param {EmbeddedChart} Sheets chart to embed on slide
* @returns {Presentation} Slide deck with results
*/
function createSlidePresentation(spreadsheet, chart) {
// Create the new presentation.
var deck = SlidesApp.create(QUERY_NAME);
// Populate the title slide.
var [title, subtitle] = deck.getSlides()[0].getPageElements();
title.asShape().getText().setText(QUERY_NAME);
subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' +
'Google Apps Script, BigQuery, Sheets, Slides');
- أضِف جدول البيانات. الخطوة التالية في
createSlidePresentation()
هي استيراد بيانات الخلية من"جدول بيانات Google"إلى مجموعة الشرائح الجديدة. مقتطف الرمز هذا، لذا يُرجى إضافته إلى الدالة:
// Data range to copy is from cell A1 to B11
var START_CELL = 'A1'; // include header row
var END_CELL = 'B11';
// Add the table slide and insert an empty table on it of
// the dimensions of the data range; fails if Sheet empty.
var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
var sheetValues = spreadsheet.getSheets()[0].getRange(
START_CELL + ':' + END_CELL).getValues();
var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);
// Populate the table with spreadsheet data.
for (var i = 0; i < sheetValues.length; i++) {
for (var j = 0; j < sheetValues[0].length; j++) {
table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
}
}
- استيراد الرسم البياني. الخطوة الأخيرة في
createSlidePresentation()
هي إنشاء شريحة واحدة أخرى، واستيراد الرسم البياني من جدول البيانات، وعرض الكائنPresentation
. أضِف هذا المقتطف النهائي إلى الدالة:
// Add a chart slide and insert the chart on it.
var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
chartSlide.insertSheetsChart(chart);
// Return the presentation object for later use.
return deck;
}
- رسم بياني لإرجاع المشتريات. الآن بعد أن اكتملت وظائفنا النهائية، يمكنك إلقاء نظرة أخرى على توقيعها. نعم، يتطلب
createSlidePresentation()
كلاً من جدول البيانات وكائن الرسم البياني. لقد أجرينا تعديلات علىrunQuery()
من أجل عرض العنصرSpreadsheet
، ولكننا نحتاج الآن إلى إجراء تغيير مشابه علىcreateColumnChart()
لعرض عنصر الرسم البياني (EmbeddedChart
). ارجع إلى طلبك على الرمز لإضافة سطر أخير في نهايةcreateColumnChart()
لإجراء ذلك:
// NEW: Return chart object for later use
return chart;
}
- تعديل
createBigQueryPresentation()
بما أنّcreateColumnChart()
تعرض الرسم البياني، يجب حفظ ذلك الرسم البياني في متغيّر ثم تمرير كل جدول البيانات والرسم البياني إلىcreateSlidePresentation()
. بما أنّنا نسجِّل عنوان URL لجدول البيانات الذي تم إنشاؤه حديثًا، فلنسجِّل أيضًا عنوان URL لعرض تقديمي جديد. يمكنك تعديلcreateBigQueryPresentation()
ليبدو كما يلي:
/**
* Runs a BigQuery query, adds data and a chart in a Sheet,
* and adds the data and chart to a new slide presentation.
*/
function createBigQueryPresentation() {
var spreadsheet = runQuery();
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
var chart = createColumnChart(spreadsheet); // UPDATED
var deck = createSlidePresentation(spreadsheet, chart); // NEW
Logger.log('Results slide deck created: %s', deck.getUrl()); // NEW
}
- حفظ
createBigQueryPresentation()
وتشغيله مرة أخرى وقبل التنفيذ، عليك التعرُّف على تطبيقك الآن عن مجموعة أذونات أخرى من جانب المستخدم لعرض العروض التقديمية في تطبيق العروض التقديمية من Google وإدارتها. بعد منح هذا الإذن، سيتم تشغيله كما كان من قبل. - الآن بالإضافة إلى جدول البيانات الذي تم إنشاؤه، يجب أن تحصل أيضًا على عرض تقديمي جديد من العروض التقديمية من Google يحتوي على 3 شرائح (العنوان، وجدول البيانات، ومخطط البيانات)، كما هو موضح أدناه:
تهانينا. لقد أنشأت الآن تطبيقًا يستفيد من جانبَي Google Cloud من خلال تنفيذ طلب Google BigQuery الذي يطلب إحدى مجموعات البيانات المتاحة للجميع، وإنشاء جدول بيانات جديد على Google لتخزين النتائج، وإضافة رسم بياني استنادًا إلى تلك البيانات التي تم استردادها للتو، وأخيرًا إنشاء عرض تقديمي في "العروض التقديمية من Google" يعرض النتائج بالإضافة إلى رسم بياني في جدول البيانات.
هذا ما فعلته تقنيًا. بصفة عامة، لقد تحوّلت من تحليل بيانات ضخم إلى شيء يمكنك تقديمه إلى الأشخاص المعنيين، وكل ذلك في مجال الترميز. نأمل أن تلهمك هذه العيّنة لإجراء ذلك وتخصيصها لمشروعاتك الخاصة. وفي ختام هذا الدرس التطبيقي حول الترميز، سنتناول بعض الاقتراحات حول كيفية تحسين نموذج التطبيق هذا.
عند إجراء تغييرات أعلاه من المهمة النهائية (مرة أخرى باستثناء PROJECT_ID
)، من المفترض أن يظهر جهاز bq-sheets-slides.js
الآن على النحو التالي (وتتوفر أيضًا في مجلد final
في ملف GitHub):
bq-sheets-slides.js
/**
* Copyright 2018 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Filename for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud API project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');
/**
* Runs a BigQuery query; puts results into Sheet. You must enable
* the BigQuery advanced service before you can run this code.
* @see http://developers.google.com/apps-script/advanced/bigquery#run_query
* @see http://github.com/googleworkspace/apps-script-samples/blob/main/advanced/bigquery.gs
*
* @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
* @see http://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
*/
function runQuery() {
// Replace sample with your own BigQuery query.
var request = {
query:
'SELECT ' +
'LOWER(word) AS word, ' +
'SUM(word_count) AS count ' +
'FROM [bigquery-public-data:samples.shakespeare] ' +
'GROUP BY word ' +
'ORDER BY count ' +
'DESC LIMIT 10'
};
var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
var jobId = queryResults.jobReference.jobId;
// Wait for BQ job completion (with exponential backoff).
var sleepTimeMs = 500;
while (!queryResults.jobComplete) {
Utilities.sleep(sleepTimeMs);
sleepTimeMs *= 2;
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
}
// Get all results from BigQuery.
var rows = queryResults.rows;
while (queryResults.pageToken) {
queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
pageToken: queryResults.pageToken
});
rows = rows.concat(queryResults.rows);
}
// Return null if no data returned.
if (!rows) {
return Logger.log('No rows returned.');
}
// Create the new results spreadsheet.
var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
var sheet = spreadsheet.getActiveSheet();
// Add headers to Sheet.
var headers = queryResults.schema.fields.map(function(field) {
return field.name.toUpperCase();
});
sheet.appendRow(headers);
// Append the results.
var data = new Array(rows.length);
for (var i = 0; i < rows.length; i++) {
var cols = rows[i].f;
data[i] = new Array(cols.length);
for (var j = 0; j < cols.length; j++) {
data[i][j] = cols[j].v;
}
}
// Start storing data in row 2, col 1
var START_ROW = 2; // skip header row
var START_COL = 1;
sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);
// Return the spreadsheet object for later use.
return spreadsheet;
}
/**
* Uses spreadsheet data to create columnar chart.
* @param {Spreadsheet} Spreadsheet containing results data
* @returns {EmbeddedChart} visualizing the results
* @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
*/
function createColumnChart(spreadsheet) {
// Retrieve the populated (first and only) Sheet.
var sheet = spreadsheet.getSheets()[0];
// Data range in Sheet is from cell A2 to B11
var START_CELL = 'A2'; // skip header row
var END_CELL = 'B11';
// Place chart on Sheet starting on cell E5.
var START_ROW = 5; // row 5
var START_COL = 5; // col E
var OFFSET = 0;
// Create & place chart on the Sheet using above params.
var chart = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(sheet.getRange(START_CELL + ':' + END_CELL))
.setPosition(START_ROW, START_COL, OFFSET, OFFSET)
.build();
sheet.insertChart(chart);
// Return the chart object for later use.
return chart;
}
/**
* Create presentation with spreadsheet data & chart
* @param {Spreadsheet} Spreadsheet with results data
* @param {EmbeddedChart} Sheets chart to embed on slide
* @returns {Presentation} Returns a slide deck with results
* @see http://developers.google.com/apps-script/reference/slides/presentation
*/
function createSlidePresentation(spreadsheet, chart) {
// Create the new presentation.
var deck = SlidesApp.create(QUERY_NAME);
// Populate the title slide.
var [title, subtitle] = deck.getSlides()[0].getPageElements();
title.asShape().getText().setText(QUERY_NAME);
subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' +
'Google Apps Script, BigQuery, Sheets, Slides');
// Data range to copy is from cell A1 to B11
var START_CELL = 'A1'; // include header row
var END_CELL = 'B11';
// Add the table slide and insert an empty table on it of
// the dimensions of the data range; fails if Sheet empty.
var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
var sheetValues = spreadsheet.getSheets()[0].getRange(
START_CELL + ':' + END_CELL).getValues();
var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);
// Populate the table with spreadsheet data.
for (var i = 0; i < sheetValues.length; i++) {
for (var j = 0; j < sheetValues[0].length; j++) {
table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
}
}
// Add a chart slide and insert the chart on it.
var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
chartSlide.insertSheetsChart(chart);
// Return the presentation object for later use.
return deck;
}
/**
* Runs a BigQuery query, adds data and a chart in a Sheet,
* and adds the data and chart to a new slide presentation.
*/
function createBigQueryPresentation() {
var spreadsheet = runQuery();
Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
var chart = createColumnChart(spreadsheet);
var deck = createSlidePresentation(spreadsheet, chart);
Logger.log('Results slide deck created: %s', deck.getUrl());
}
عدم لعب أي دور في هذا الدرس التطبيقي هو "الملف&الثاني"؛ ويمكنك الوصول إليه من خلال الانتقال إلى علامة تبويب متصفِّح الرمز واختيار عرض >، عرض ملف البيان من القائمة في أعلى الشاشة. يجب أن يظهر المحتوى على النحو التالي:
appscript.json
{
"timeZone": "America/Los_Angeles",
"dependencies": {
"enabledAdvancedServices": [{
"userSymbol": "BigQuery",
"serviceId": "bigquery",
"version": "v2"
}]
},
"exceptionLogging": "STACKDRIVER"
}
ملف البيان هو ملف إعداد على مستوى النظام يستخدمه Apps Script لمعرفة بيئة التنفيذ المتاحة لتطبيقك. لا يؤثر تغطية محتوى ملف البيان في نطاق هذا الدرس التطبيقي، ولكن يمكنك الحصول على فكرة عن كيفية عمل ملف البيان هذا.
في ما يلي مراجع إضافية لمساعدتك على التعمّق في قراءة المواد التي يتناولها هذا الدرس التطبيقي حول الترميز والتعرّف على طرق أخرى للوصول إلى أدوات مطوّري البرامج في Google آليًا. نهدف إلى مزامنة هذا الدرس التطبيقي مع الترميز باستخدام الإعادة.
الموارد لهذا التطبيق
- رابط الترميز هذا: g.co/codelabs/bigquery-sheets-slides
- رمز المصدر repo
- مشاركة فيديو (و) مدونة مطوّري البرامج
- جلسةGoogle Cloud Next '18
المستندات
- موقع وثائق برمجة تطبيقات Google
- خدمة جداول البيانات لبرمجة التطبيقات
- خدمة العروض التقديمية من برمجة التطبيقات
- برمجة التطبيقات خدمة BigQuery المتقدمة
الفيديوهات ذات الصلة والعامة
- هل تريد إخفاء كلمة مرور Google (التطبيقات) الأخرى؟ (فيديو تقديمي حول برمجة تطبيقات Google)
- الوصول إلى "خرائط Google" من جدول بيانات؟؟ (فيديو)
- مكتبة الفيديو لبرمجة Google Apps
- Launchpad سلسلة فيديو على الإنترنت (السابقة...)
- سلسلة فيديوهات عرض مطوّري البرامج في G Suite
آخر الأخبار العامة والعامة
- أداة ربط بيانات "جداول بيانات Google" لأداة BigQuery (إعلان)
- يتم دمج Google BigQuery مع Google Drive (link1 وlink2)
- مدوّنة مطوّري البرامج من Google
- مدونة Google Cloud Platform
- Big Data & Big Machine Learning Blog في Google Cloud
- Google Developers Twitter (@GoogleDevs)
- مدوّنة مطوّري البرامج في G Suite
- مطوّرو G Suite Twitter (@googleworkspace)
- النشرة الإخبارية الشهرية لمطوّري البرامج في G Suite
الدروس التطبيقية الأخرى حول الترميز
مبتدئ
- [واجهات برمجة تطبيقات REST] G Suite &؛ Google APIs (واجهة برمجة تطبيقات Drive)
- [أداة تطوير التطبيقات] إنشاء تطبيق ويب لقاعدة بيانات في "أداة تطوير التطبيقات"
مزايا متوسطة
- [برمجة التطبيقات] أداة سطر الأوامر في برمجة تطبيقات CLASP
- [برمجة التطبيقات] إضافات Gmail
- [برمجة التطبيقات] إضافة "مستندات Google" &، وGoogle Cloud Natural Language API
- [برمجة التطبيقات] إطار عمل تتبُّع Hangouts Chat
- [واجهات برمجة تطبيقات REST] أداة إعداد التقارير المخصّصة (جداول بيانات Google)
- [واجهات برمجة تطبيقات REST] أداة إنشاء الشرائح المخصصة لمحلل BigQuery لترخيص Github (العروض التقديمية من Google+BigQuery APIs)
تطبيقات مرجعية
- أداة تحويل الملفات إلى تنسيق "العروض التقديمية من Google" (واجهة برمجة تطبيقات "العروض التقديمية من Google")
في ما يلي عدّة تحديات خاصة لترميز الرموز &&، يمكنك من خلالها تحسين النموذج الذي أنشأناه في هذا الدرس التطبيقي أو زيادته. هذه القائمة ليست شاملة بالتأكيد، ولكنّها ستقدّم بعض الأفكار الملهمة حول الخطوات التي يمكنك اتّخاذها.
- التطبيق. ألا تريد أن تكون محدودة باستخدام JavaScript أو القيود التي تفرضها "برمجة التطبيقات"؟ نقل هذا التطبيق إلى لغة البرمجة المفضلة لديك التي تستخدم واجهات برمجة تطبيقات REST في Google BigQuery و"جداول بيانات Google" و"العروض التقديمية من Google"
- BigQuery. جرِّب طلب بحث مختلفًا لمجموعة بيانات شكسبير... ربما ابحث عن طلب بحث يثير اهتمامك. يمكن العثور على نموذج طلب بحث آخر في نموذج تطبيق BigQuery النص البرمجي لـ Apps الأصلي.
- BigQuery. يمكنك تجربة بعض مجموعات البيانات العلنية الأخرى على BigQuery... للعثور على مجموعة بيانات قد تكون مفيدة لك.
- BigQuery. في السابق، أشرنا إلى طلبات البحث الأخرى التي يمكنك تجربتها مقابل أعمال "شكسبير" أو جداول البيانات العامة الأخرى، وأردنا إعادة مشاركة صفحة الويب هذه بالإضافة إلى هذه الصفحة مرة أخرى.
- جداول بيانات Google. ويمكنك اختبار أنواع أخرى من الرسوم البيانية.
- جداول بيانات Google و&؛ BigQuery. يمكنك تحويل الجداول... قد تكون لديك مجموعة كبيرة من البيانات في جدول بيانات في مكان ما. في عام 2016، قدَّم فريق BigQuery الميزة التي تسمح لمطوّري البرامج باستخدام جدول بيانات كمصدر للبيانات (يُرجى الاطِّلاع على مشاركة المدونة الواحدة والثانية للحصول على مزيد من المعلومات).
- العروض التقديمية من Google. أضِف شرائح أخرى إلى العرض التقديمي الذي تم إنشاؤه، مثل الصور أو مواد العرض الأخرى المرتبطة بتحليل بياناتك الضخمة. إليك دليل إلى الخدمات المضمَّنة في "العروض التقديمية من Google" لمساعدتك على البدء.
- G Suite. ابحث عن استخدام لخدمات G Suite أو Google المضمَّنة الأخرى من برمجة التطبيقات، أي Gmail وGoogle Drive و"تقويم Google" و"مستندات Google" و"خرائط Google" و"إحصاءات Google" وYouTube وغيرها، بالإضافة إلى الخدمات المتقدمة الأخرى. يمكنك الاطِّلاع على نظرة عامة على المرجع لكلٍّ من الخدمات المُدمَجة والمتقدمة للحصول على مزيد من المعلومات.