يوضّح هذا المستند واجهات برمجة التطبيقات لوضع علامات التتبُّع من جانب الخادم.
addEventCallback
يتم تسجيل دالّة رد الاتصال التي سيتم استدعاؤها في نهاية الحدث. سيتم استدعاء دالة الاستدعاء عند تنفيذ جميع العلامات للحدث. يتم تمرير قيمتَين إلى دالة الاستدعاء: رقم تعريف الحاوية التي تستدعي الدالة وعنصر يحتوي على معلومات عن الحدث.
عند استخدام واجهة برمجة التطبيقات هذه في علامة، يتم ربطها بالحدث الحالي. عند استخدام واجهة برمجة التطبيقات هذه في برنامج، يجب ربطها بحدث معيّن باستخدام دالة bindToEvent في واجهة برمجة التطبيقات runContainer. يُرجى الاطّلاع على
المثال لمزيد من التفاصيل.
البنية
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
callback |
function | الدالة التي يتم استدعاؤها في نهاية الحدث |
يحتوي العنصر eventData على البيانات التالية:
| اسم المفتاح | النوع | الوصف |
|---|---|---|
tags |
Array |
مصفوفة من عناصر بيانات العلامات وستتضمّن هذه المصفوفة إدخالاً لكل علامة تم تنشيطها أثناء الحدث. يحتوي عنصر بيانات العلامة على معرّف العلامة (id) وحالة تنفيذها (status) ووقت تنفيذها (executionTime). وستتضمّن بيانات العلامة أيضًا بيانات وصفية إضافية تم ضبطها على العلامة.
|
في برنامج عميل:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
في علامة:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
الأذونات المرتبطة
callLater
تحدّد موعدًا لاستدعاء دالة بشكل غير متزامن. سيتم استدعاء الدالة بعد عرض الرمز الحالي. هذا يعادل
setTimeout(<function>, 0).
مثال
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
البنية
callLater(function)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
function |
function | الدالة المطلوب استدعاؤها |
الأذونات المرتبطة
بلا عُري
claimRequest
استخدِم واجهة برمجة التطبيقات هذه في برنامج عميل للمطالبة بالطلب. بعد المطالبة بطلب، لا تشغّل الحاوية برامج إضافية.
تعرض واجهة برمجة التطبيقات هذه استثناءً إذا تم استدعاؤها في علامة أو متغيّر. تُظهر واجهة برمجة التطبيقات هذه استثناءً في حال استدعائها بعد عرض العميل (على سبيل المثال، في حال استدعائها في ردّ اتصال غير متزامن، مثل callLater أو دالة runContainer onComplete).
يجب أن يطالب العميل بالطلب باستخدام واجهة برمجة التطبيقات هذه قبل طلب البيانات من واجهة برمجة التطبيقات runContainer.
مثال
const claimRequest = require('claimRequest');
claimRequest();
البنية
claimRequest();
الأذونات المرتبطة
بلا عُري
computeEffectiveTldPlusOne
تعرض هذه الدالة نطاق المستوى الأعلى الفعّال + 1 (eTLD+1) للنطاق أو عنوان URL المحدّدَين. يتم احتساب eTLD+1 من خلال تقييم النطاق وفقًا لقواعد قائمة اللاحقات العلنية. عادةً ما يكون eTLD+1 هو النطاق الأعلى مستوى الذي يمكنك ضبط ملف تعريف ارتباط عليه.
إذا كانت الوسيطة فارغة أو غير محدّدة، يتم عرض قيمة الوسيطة بدون تغيير. وإلا يتم فرض الوسيطة على سلسلة. إذا لم تكن الوسيطة نطاقًا أو عنوان URL صالحًا، يتم عرض سلسلة فارغة. إذا لم يتمكّن الخادم من جلب قائمة اللاحقات العامة، يتم عرض قيمة الوسيطة بدون تغيير.
مثال
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
البنية
computeEffectiveTldPlusOne(domainOrUrl);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
domainOrUrl |
string | نطاق أو عنوان URL يتم احتساب eTLD+1 عليه |
الأذونات المرتبطة
بلا عُري
createRegex
تنشئ هذه الدالة مثيلاً جديدًا للتعبير النمطي وتعرضه داخل عنصر. لا يمكنك الوصول إلى
التعبير النمطي مباشرةً. ومع ذلك، يمكنك تمريرها إلى واجهة برمجة التطبيقات testRegex،
String.replace() وString.match() وString.search().
تعرض الدالة null إذا كان التعبير النمطي غير صالح أو إذا كانت Re2 غير متاحة على الخادم.
تستخدم واجهة برمجة التطبيقات هذه تنفيذ Re2. يجب أن تكون صورة Docker للخادم بالإصدار 2.0.0 أو إصدار أحدث.
مثال
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
البنية
createRegex(pattern, flags);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
pattern |
string | نص التعبير العادي |
flags |
string | سلسلة اختيارية تحتوي على علامات التعبير النمطي الذي يتم إنشاؤه. يتمّ توفير `g` (عام) و `i` (تجاهُل حالة الأحرف). ويتم تجاهل جميع الأحرف الأخرى بدون إرسال إشعار. |
الأذونات المرتبطة
بلا عُري
الحد الأدنى لإصدار الصورة
decodeUri
لفك ترميز أي أحرف مرمّزة في معرّف الموارد المنتظم (URI) المقدَّم تعرض هذه الدالة سلسلة تمثّل معرّف الموارد المنتظم (URI) الذي تم فك ترميزه. يتم عرض undefined عند تقديم إدخال غير صالح.
مثال
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
البنية
decodeUri(encoded_uri);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
encoded_uri |
string |
معرّف موارد منتظم (URI) تم ترميزه بواسطة
encodeUri() أو بوسائل أخرى.
|
الأذونات المرتبطة
بلا عُري
decodeUriComponent
تفكّ ترميز أي أحرف مرمّزة في مكوّن معرّف الموارد المنتظم (URI) المقدَّم. تعرض سلسلة تمثّل مكوّن معرّف الموارد المنتظم (URI) الذي تم فك ترميزه. تعرض الدالة undefined عند
إدخال قيمة غير صالحة.
مثال
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
البنية
decodeUriComponent(encoded_uri_component);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
encoded_uri_component |
string |
مكوّن معرّف موارد منتظم (URI) تم ترميزه باستخدام
encodeUriComponent()
أو بوسائل أخرى
|
الأذونات المرتبطة
بلا عُري
encodeUri
تعرض معرّف موارد منتظم (URI) مرمّزًا من خلال إلغاء الأحرف الخاصة. لعرض سلسلة تمثّل السلسلة المقدَّمة المرمّزة كمعرّف موارد منتظم (URI).
مثال
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
البنية
encodeUri(uri);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
uri |
string | معرّف موارد منتظم (URI) كامل |
الأذونات المرتبطة
بلا عُري
encodeUriComponent
تعرض معرّف موارد منتظم (URI) مرمّزًا من خلال إلغاء الأحرف الخاصة. تعرض سلسلة تمثّل السلسلة المقدَّمة المرمَّزة كمعرّف موارد منتظم (URI).
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
البنية
encodeUriComponent(str);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
str |
string | مكوّن من معرّف موارد منتظم (URI). |
الأذونات المرتبطة
بلا عُري
extractEventsFromMpv1
تتم ترجمة طلب Measurement Protocol V1 الوارد إلى قائمة أحداث بتنسيق المخطط الموحّد. تعرض هذه الدالة قائمة بالأحداث المستخرَجة. يتم عرض رسالة خطأ إذا لم يكن الطلب بالتنسيق الصحيح.
مثال
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
البنية
extractEventsFromMpv1();
الأذونات المرتبطة
يتطلّب ذلك إذن read_request. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
bodyquery parameters
extractEventsFromMpv2
تترجم هذه الواجهة طلب Measurement Protocol V2 الوارد إلى قائمة أحداث بتنسيق المخطط الموحّد. تعرض هذه الدالة قائمة بالأحداث المستخرَجة. يتم عرض رسالة خطأ إذا لم يكن الطلب بالتنسيق الصحيح.
مثال
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
البنية
extractEventsFromMpv2();
الأذونات المرتبطة
يتطلّب ذلك إذن read_request. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
bodyquery parameters
fromBase64
تفكّ ترميز سلسلة بترميز base64. يتم عرض undefined إذا كان الإدخال غير صالح.
البنية
fromBase64(base64EncodedString);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
base64EncodedString |
string | سلسلة Base64 المشفّرة |
مثال
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
الأذونات المرتبطة
بلا عُري
generateRandom
تعرض رقمًا عشوائيًا (عدد صحيح) ضمن النطاق المحدّد.
مثال
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
البنية
generateRandom(min, max);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
min |
number | الحد الأدنى للقيمة المحتملة للعدد الصحيح الذي يتم عرضه (شامل). |
max |
number | الحد الأقصى للقيمة المحتملة للعدد الصحيح الذي يتم عرضه (شامل). |
الأذونات المرتبطة
بلا عُري
getAllEventData
تعرض هذه الطريقة نسخة من بيانات الحدث.
البنية
getAllEventData();
الأذونات المرتبطة
getAnonymizedIpAddress
تعرض هذه السمة تمثيلاً لسلسلة مخفية الهوية لعنوان IP الذي صدر منه الطلب.
بالنسبة إلى عناوين IPv4، يتم إخفاء آخر وحدة ثمانيّة البت لتصبح 0 (على سبيل المثال،
يصبح 198.51.100.42 على النحو التالي: 198.51.100.0). بالنسبة إلى عناوين IPv6، يتم إخفاء آخر 80 بت
لتصبح أصفارًا، مع الاحتفاظ بأول 48 بت (على سبيل المثال،
يصبح 2001:db8:cafe:1234:5678:90ab:cdef:1234 على النحو التالي: 2001:db8:cafe::).
تعرض هذه الدالة القيمة "::" إذا كان عنوان IP غير صالح أو لا يمكن تحليله، لذا تكون النتيجة
آمنة دائمًا للاستخدام كقيمة ip_override.
مثال
const getAnonymizedIpAddress = require('getAnonymizedIpAddress');
const anonymizedIp = getAnonymizedIpAddress();
البنية
getAnonymizedIpAddress();
الأذونات المرتبطة
getClientName
تعرض هذه الدالة سلسلة تحتوي على اسم العميل الحالي.
البنية
getClientName();
الأذونات المرتبطة
getContainerVersion
تعرض هذه الدالة عنصرًا يحتوي على بيانات حول الحاوية الحالية. سيحتوي العنصر الذي تم إرجاعه على الحقول التالية:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
مثال
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
البنية
getContainerVersion();
الأذونات المرتبطة
getCookieValues
تعرض هذه الدالة مصفوفة تحتوي على قيم جميع ملفات تعريف الارتباط التي تحمل الاسم المحدّد.
مثال
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
البنية
getCookieValues(name[, noDecode]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
name |
string | اسم ملف تعريف الارتباط |
noDecode |
boolean |
إذا كانت القيمة true، لن يتم فك ترميز قيم ملفات تعريف الارتباط قبل إرجاعها. القيمة التلقائية هي false.
|
الأذونات المرتبطة
getEventData
تعرض نسخة من القيمة في المسار المحدّد في بيانات الأحداث. يتم عرض القيمة undefined في حال عدم توفّر بيانات أحداث أو في حال عدم توفّر قيمة في المسار المحدّد.
مثال
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
keyPath |
any |
مسار المفتاح، حيث يتم فصل عناصر المسار بواسطة نقاط. يمكن أن تكون عناصر المسار عبارة عن مفاتيح في عنصر أو مؤشرات في مصفوفة. إذا لم تكن السلسلة keyPath نصية، يتم تحويلها إلى سلسلة نصية.
|
البنية
getEventData(keyPath);
الأذونات المرتبطة
getGoogleAuth
تعرض هذه الدالة عنصر تفويض يتضمّن عنوان تفويض لـ Google Cloud APIs عند استخدامه مع sendHttpGet أو sendHttpRequest. تستخدم واجهة برمجة التطبيقات هذه بيانات الاعتماد التلقائية للتطبيق للعثور تلقائيًا على بيانات الاعتماد من بيئة الخادم.
مثال
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
البنية
getGoogleAuth(scopes);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
scopes
|
Array | مصفوفة من نطاقات OAuth 2.0 في Google APIs لطلب الوصول إليها |
الأذونات المرتبطة
يتطلّب ذلك إذن use_google_credentials. يجب ضبط الإذن باستخدام نطاق واحد أو أكثر من النطاقات المسموح بها.
getGoogleScript
تسترد هذه الدالة موردًا من مجموعة محدّدة مسبقًا من نصوص Google البرمجية، وتعرض وعدًا يتضمّن النص البرمجي والبيانات الوصفية المرتبطة بالتخزين المؤقت.
سيتم حلّ الوعد إلى كائن يحتوي على مفتاحَين: script وmetadata. إذا تعذّر تنفيذ الطلب، سيتم رفض الوعد باستخدام مفتاح reason.
سيحتوي الكائن metadata على البيانات الوصفية التالية للتخزين المؤقت استنادًا إلى عناوين استجابة المورد، ولن يظهر كل حقل إلا إذا كان العنوان المقابل له متوفّرًا في استجابة المورد.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
مثال
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
البنية
getGoogleScript(script[, options]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
script |
string |
اسم النص البرمجي النصوص البرمجية المتوافقة هي
'ANALYTICS' و'GTAG' و'GTM'.يجلب الخيار 'ANALYTICS' نص "إحصاءات Google" البرمجي من https://www.google-analytics.com/analytics.js.يؤدي الخيار 'GTAG' إلى جلب النص البرمجي لعلامة الموقع الشاملة (gtag.js)
من https://www.googletagmanager.com/gtag/js.يجلب الخيار 'GTM' نص Google Tag Manager البرمجي من https://www.googletagmanager.com/gtm.js.
|
options |
object | خيارات الطلب الاختيارية يمكنك الاطّلاع أدناه على الخيارات المتاحة. |
الخيارات
| Option | النوع | الوصف |
|---|---|---|
id |
string |
ينطبق ذلك على 'GTAG' مع رقم تعريف القياس في gtag و'GTM' مع رقم تعريف حاوية الويب (مثلاً: GTM-XXXX).
|
debug |
any | إذا كانت القيمة "صحيح"، يتم طلب نسخة تصحيح الأخطاء من نص القياس البرمجي وعرضها. |
timeout |
number |
مهلة الطلب بالملي ثانية، ويتم تجاهل القيم غير الموجبة. إذا انتهت مهلة الطلب، سيتم استدعاء دالة الاستدعاء باستخدام undefined لقيمة النص البرمجي و{} لعنصر البيانات الوصفية.
|
يتم تجاهل مفاتيح الخيارات التي لم يتم التعرّف عليها.
الأذونات المرتبطة
يتطلّب ذلك إذن send_http. يجب ضبط الإذن للسماح
بالوصول إلى ما يلي على الأقل:
- السماح بنطاقات Google
getRemoteAddress
تعرض هذه الدالة تمثيلاً للسلسلة لعنوان IP الذي تم إرسال الطلب منه، مثل 12.345.67.890 لعنوان IPv4 أو 2001:0db8:85a3:0:0:8a2e:0370:7334 لعنوان IPv6، من خلال قراءة عناوين الطلبات، مثل Forwarded وX-Forwarded-For.
ملاحظة: تبذل واجهة برمجة التطبيقات هذه قصارى جهدها للعثور على عنوان IP الأصلي، ولكن لا يمكنها ضمان دقة النتيجة.
البنية
getRemoteAddress();
الأذونات المرتبطة
يتطلّب ذلك إذن read_request. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
- العنوانان
ForwardedوX-Forwarded-For - عنوان IP البعيد
getRequestBody
تعرض هذه السمة نص الطلب على شكل سلسلة، في حال توفّره، أو undefined في حال عدم توفّره.
البنية
getRequestBody();
الأذونات المرتبطة
getRequestHeader
تعرض هذه الدالة قيمة عنوان الطلب المحدّد كـ سلسلة، في حال توفّره، أو
undefined في حال عدم توفّره. إذا تكرّر العنوان، يتم دمج القيم التي تم عرضها مع ', '.
مثال
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
البنية
getRequestHeader(headerName);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
headerName |
string | اسم العنوان هذه القيمة غير حساسة لحالة الأحرف. |
الأذونات المرتبطة
getRequestMethod
تعرض هذه السمة طريقة الطلب، مثل 'GET' أو 'POST'، على شكل سلسلة.
مثال
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
البنية
getRequestMethod();
الأذونات المرتبطة
بلا عُري
getRequestPath
تعرض هذه السمة مسار الطلب بدون سلسلة طلب البحث. على سبيل المثال، إذا كان عنوان URL هو
'/foo?id=123'، ستعرض هذه الدالة '/foo'. تتم تلقائيًا إزالة بادئة عنوان URL لحاوية الخادم من المسار. على سبيل المثال، إذا كان عنوان URL لحاوية الخادم هو
https://example.com/analytics وكان مسار الطلب هو '/analytics/foo'،
سيؤدي ذلك إلى عرض '/foo'.
مثال
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
البنية
getRequestPath();
الأذونات المرتبطة
getRequestQueryParameter
تعرض هذه الدالة القيمة التي تم فك ترميزها لمَعلمة سلسلة طلب البحث المحدّدة كـ سلسلة،
أو undefined إذا لم تكن المَعلمة متوفّرة. إذا تكرّرت المَعلمة في سلسلة طلب البحث، سيتم عرض القيمة الأولى التي تظهر في سلسلة طلب البحث.
مثال
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
البنية
getRequestQueryParameter(name);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
name |
string | اسم مَعلمة طلب البحث |
الأذونات المرتبطة
getRequestQueryParameters
تعرض هذه الدالة معلمات طلب البحث لطلب HTTP الوارد كعنصر يربط أسماء معلمات طلب البحث بالقيمة أو القيم المقابلة. يتم فك ترميز أسماء المَعلمات وقيمها.
مثال
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
البنية
getRequestQueryParameters();
الأذونات المرتبطة
getRequestQueryString
تعرض هذه الدالة طلب البحث كسلسلة، بدون علامة الاستفهام في البداية، أو سلسلة فارغة إذا لم يتضمّن عنوان URL للطلب سلسلة طلب بحث.
مثال
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
البنية
getRequestQueryString();
الأذونات المرتبطة
getTimestamp
تمّت إزالة هذا العمود. يُفضَّل استخدام getTimestampMillis.
تعرض هذه الدالة رقمًا يمثّل الوقت الحالي بالملي ثانية منذ حقبة يونكس، كما تعرضه الدالة Date.now().
البنية
getTimestamp();
الأذونات المرتبطة
بلا عُري
getTimestampMillis
تعرض هذه الدالة رقمًا يمثّل الوقت الحالي بالملي ثانية منذ حقبة يونكس، كما تعرضه الدالة Date.now().
البنية
getTimestampMillis();
الأذونات المرتبطة
بلا عُري
getType
تعرض هذه الدالة سلسلة تصف نوع القيمة المحدّدة.
| نوع القهوة المستخدمة | القيمة المعروضة |
|---|---|
| string | 'string' |
| number | 'number' |
| boolean | 'boolean' |
| null | 'null' |
| undefined | 'undefined' |
| Array | 'array' |
| Object | 'object' |
| الوظيفة | 'function' |
مثال
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
البنية
getType(value);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
value |
any | قيمة الإدخال |
الأذونات المرتبطة
بلا عُري
hmacSha256
تحسب هذه الدالة توقيعًا مشفّرًا باستخدام رمز مصادقة الرسائل المستند إلى التجزئة (HMAC) مع خوارزمية SHA-256. الإعداد التلقائي هو ترميز base64url.
لاستخدام واجهة برمجة التطبيقات هذه، اضبط متغيّر البيئة SGTM_CREDENTIALS على الخادم
على مسار ملف مفتاح JSON بترميز UTF-8 بالتنسيق التالي:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
والقيم هي مفاتيح HMAC بترميز base64. يجب ألا يبدأ نص JSON بعلامة ترتيب البايت.
مثال
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
البنية
hmacSha256(data, keyId, options)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
data |
string | البيانات المطلوب احتساب قيمة HMAC لها |
keyId
|
string | معرّف مفتاح من ملف مفتاح JSON يشير إلى المفتاح المطلوب استخدامه. |
options
|
object | اختياري إعداد واجهة برمجة التطبيقات. (يُرجى الاطّلاع على الخيارات أدناه). |
الخيارات
| Option | النوع | الوصف |
|---|---|---|
outputEncoding
|
string | تحدّد تنسيق الترميز للقيمة المعروضة. التنسيقات المتوافقة هي hex أو base64 أو base64url. ويتم ضبط القيمة على base64url تلقائيًا في حال عدم تحديدها. |
الأذونات المرتبطة
الحد الأدنى لإصدار الصورة
isRequestMpv1
تعرض هذه المَعلمة القيمة true إذا كان الطلب الوارد هو طلب Measurement Protocol V1، أو القيمة false في الحالات الأخرى.
مثال
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
البنية
isRequestMpv1();
الأذونات المرتبطة
بلا عُري
isRequestMpv2
تعرض هذه المَعلمة القيمة true إذا كان الطلب الوارد هو طلب Measurement Protocol V2، أو القيمة false في الحالات الأخرى.
مثال
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
البنية
isRequestMpv2();
الأذونات المرتبطة
بلا عُري
logToConsole
تسجّل هذه الدالة وسيطاتها في وحدة التحكّم.
تظهر هذه السجلّات ضمن مستكشف السجلّات في Google Cloud Console.
من "مستكشف السجلّات"، شغِّل طلب البحث logName =~ "stdout" للاطّلاع على الإدخالات في السجلّ التي أنشأتها واجهة برمجة التطبيقات هذه.
مثال
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
البنية
logToConsole(argument1[, argument2, ...]);
المعلّمات
تتلقّى واجهة برمجة التطبيقات وسيطة واحدة أو أكثر، ويتم تحويل كل منها إلى سلسلة، إذا لزم الأمر، ويتم تسجيلها في وحدة التحكّم.
الأذونات المرتبطة
makeInteger
تحوّل القيمة المحدّدة إلى رقم (عدد صحيح).
البنية
makeInteger(value);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
value |
أي نوع | القيمة المطلوب تحويلها |
الأذونات المرتبطة
بلا عُري
makeNumber
تحوّل القيمة المحدّدة إلى رقم.
البنية
makeNumber(value);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
value |
أي نوع | القيمة المطلوب تحويلها |
الأذونات المرتبطة
بلا عُري
makeString
تعرض القيمة المحدّدة على شكل سلسلة.
البنية
makeString(value);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
value |
أي نوع | القيمة المطلوب تحويلها |
الأذونات المرتبطة
بلا عُري
makeTableMap
لتحويل كائن جدول بسيط يتضمّن عمودَين إلى Map. يُستخدَم هذا الخيار لتغيير حقل نموذج SIMPLE_TABLE يتضمّن عمودَين إلى تنسيق يسهل إدارته.
على سبيل المثال، يمكن لهذه الدالة تحويل عنصر جدول:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
في خريطة:
{
'k1': 'v1',
'k2': 'v2'
}
تعرض هذه الدالة كائنًا: تمت إضافة Map المحوَّل لأزواج المفتاح/القيمة إليه، أو null في الحالات الأخرى.
البنية
makeTableMap(tableObj, keyColumnName, valueColumnName);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
tableObj |
قائمة |
تمثّل هذه المَعلمة عنصر الجدول المطلوب تحويله. وهي قائمة بالخرائط حيث يمثّل كل Map صفًا في الجدول. كل اسم سمة في كائن الصف هو اسم العمود، وقيمة السمة هي قيمة العمود في الصف.
|
keyColumnName |
string |
اسم العمود الذي ستصبح قيمه مفاتيح في Map المحوَّل
|
valueColumnName |
string |
اسم العمود الذي ستصبح قيمه قيمًا في Map المحوَّل
|
الأذونات المرتبطة
بلا عُري
parseUrl
تعرض هذه الدالة كائنًا يحتوي على جميع الأجزاء المكوّنة لعنوان URL معيّن، على غرار الكائن URL.
ستعرض واجهة برمجة التطبيقات هذه القيمة undefined لأي عنوان URL مكتوب بصيغة غير صحيحة. بالنسبة إلى عناوين URL المنسَّقة بشكل صحيح، ستكون قيمة الحقول غير المتوفّرة في سلسلة عنوان URL عبارة عن سلسلة فارغة، أو في حال استخدام searchParams، ستكون القيمة عنصرًا فارغًا.
سيحتوي العنصر المعروض على الحقول التالية:
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
مثال
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
البنية
parseUrl(url);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
url |
string | عنوان URL الكامل الذي سيتم تحليله |
الأذونات المرتبطة
بلا عُري
returnResponse
تؤدي هذه الدالة إلى محو الاستجابة التي تم ضبطها سابقًا بواسطة نماذج أخرى باستخدام واجهات برمجة التطبيقات التي تعدّل الاستجابة، بما في ذلك setCookie وsetPixelResponse وsetResponseBody وsetResponseHeader وsetResponseStatus. يتم ضبطه تلقائيًا على رمز حالة HTTP 200، ونص فارغ، وبدون رؤوس.
ننصح باستخدام واجهة برمجة التطبيقات هذه من نموذج عميل.
البنية
returnResponse();
مثال
يمكنك الاطّلاع على مثال runContainer.
الأذونات المرتبطة
runContainer
يتم تشغيل منطق الحاوية (المتغيّرات والمشغّلات والعلامات) في نطاق حدث معيّن. إذا تم استدعاء واجهة برمجة التطبيقات هذه أثناء تنفيذ الحاوية، يتم تشغيل الحاوية مرة أخرى.
تتلقّى دالتا ردّ الاتصال onComplete وonStart دالة تُسمّى
bindToEvent. استخدِم bindToEvent لتشغيل واجهة برمجة تطبيقات في سياق الحدث.
يمكنك الاطّلاع على مثال addEventCallback لمزيد من التفاصيل.
ننصح باستخدام واجهة برمجة التطبيقات هذه من نموذج عميل.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
البنية
runContainer(event, onComplete, onStart);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
event |
object | مَعلمات خاصة بالأحداث |
onComplete |
function | دالة رد اتصال يتم استدعاؤها بعد انتهاء تنشيط جميع العلامات. |
onStart |
function | عملية استدعاء يتم تنفيذها على الفور، قبل بدء تنشيط العلامات. |
الأذونات المرتبطة
sendEventToGoogleAnalytics
يتم إرسال حدث واحد باستخدام بيانات الأحداث الشائعة إلى "إحصاءات Google" وعرض
وعد يتم تحليله إلى عنصر يتضمّن مفتاح location أو
رفضه إلى عنصر يتضمّن مفتاح reason. تستند الوجهة، وهي "إحصاءات Google"،
إلى رقم تعريف القياس في بيانات الأحداث.
يتم ضبط حقل location على عنوان location، في حال توفّره.
مثال
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
البنية
sendEventToGoogleAnalytics(event);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
event |
object | الحدث بتنسيق المخطط الموحّد |
الأذونات المرتبطة
يتطلّب ذلك إذن send_http. يجب ضبط الإذن للسماح
بالوصول إلى ما يلي على الأقل:
- السماح بنطاقات Google
sendHttpGet
يُرسل هذا الإجراء طلب استرداد بيانات باستخدام GET إلى عنوان URL المحدّد، ويعرض وعدًا يتم حلّه بالنتيجة بعد اكتمال الطلب أو انتهاء مهلته.
النتيجة التي تم حلّها هي كائن يحتوي على ثلاثة مفاتيح: statusCode وheaders وbody. إذا تعذّر تنفيذ الطلب (على سبيل المثال، عنوان URL غير صالح، أو عدم توفّر مسار إلى المضيف، أو تعذُّر التفاوض على طبقة المقابس الآمنة، وما إلى ذلك)، سيتم رفض الوعد مع ظهور: {reason:
'failed'}. إذا تم ضبط الخيار timeout وانتهت مهلة الطلب، سيتم رفض الوعد مع ظهور: {reason: 'timed_out'}
مثال
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
البنية
sendHttpGet(url[, options]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
url |
string | عنوان URL المطلوب |
options
|
object | خيارات الطلب الاختيارية (يُرجى الاطّلاع على الخيارات أدناه). |
الخيارات
| Option | النوع | الوصف |
|---|---|---|
headers |
string | عناوين الطلبات الإضافية |
timeout
|
number | المهلة بالمللي ثانية قبل إلغاء الطلب القيمة التلقائية هي 15000. |
authorization
|
object | اختياري: عنصر التفويض من
الطلب إلى getGoogleAuth لتضمين
عناوين التفويض عند إرسال الطلبات
إلى googleapis.com. |
الأذونات المرتبطة
sendHttpRequest
يُرسل طلب HTTP إلى عنوان URL المحدّد، ويعرض وعدًا يتم حلّه بالاستجابة بعد اكتمال الطلب أو انتهاء مهلته.
النتيجة التي تم حلّها هي كائن يحتوي على ثلاثة مفاتيح: statusCode وheaders وbody. إذا تعذّر تنفيذ الطلب (على سبيل المثال، عنوان URL غير صالح، أو عدم توفّر مسار إلى المضيف، أو تعذُّر التفاوض على طبقة المقابس الآمنة، وما إلى ذلك)، سيتم رفض الوعد مع ظهور: {reason:
'failed'}. إذا تم ضبط الخيار timeout وانتهت مهلة الطلب، سيتم رفض الوعد مع ظهور: {reason: 'timed_out'}
مثال
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
البنية
sendHttpRequest(url[, options[, body]]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
url |
string | عنوان URL المطلوب |
options
|
object | خيارات الطلب الاختيارية (يُرجى الاطّلاع على الخيارات أدناه). |
body |
string | نص الطلب اختياري. |
الخيارات
| Option | النوع | الوصف |
|---|---|---|
headers |
string | عناوين الطلبات الإضافية |
method |
object | طريقة الطلب القيمة التلقائية هي GET. |
timeout
|
number | المهلة بالمللي ثانية قبل إلغاء الطلب القيمة التلقائية هي 15000. |
authorization
|
object | اختياري: عنصر التفويض من
الطلب إلى getGoogleAuth لتضمين
عناوين التفويض عند إرسال الطلبات
إلى googleapis.com. |
الأذونات المرتبطة
sendPixelFromBrowser
يتم إرسال أمر إلى المتصفّح لتحميل عنوان URL المقدَّم كعلامة <img>. يتوفّر بروتوكول الأوامر هذا في علامة التتبُّع من Google لخدمة "إحصاءات Google" وعلامات الويب "إحصاءات Google": حدث "إحصاءات Google". يجب ضبط عنوان URL لحاوية الخادم. لمزيد من التفاصيل، يُرجى الاطّلاع على التعليمات.
تعرض واجهة برمجة التطبيقات هذه القيمة false إذا كان الطلب الوارد لا يتوافق مع بروتوكول الأمر، أو إذا سبق أن تم محو الاستجابة. وإلا، ستعرض واجهة برمجة التطبيقات هذه القيمة true.
مثال:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
البنية
sendPixelFromBrowser(url)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
url |
string | عنوان URL المطلوب إرساله إلى المتصفّح |
الأذونات المرتبطة
setCookie
يتم ضبط ملف تعريف ارتباط أو حذفه باستخدام الخيارات المحدّدة.
لحذف ملف تعريف ارتباط، يجب ضبط ملف تعريف ارتباط بالمسار والنطاق نفسهما اللذين تم إنشاء ملف تعريف الارتباط بهما، وتعيين قيمة انتهاء صلاحية له في الماضي، مثل "Thu, 01 Jan 1970 00:00:00 GMT".
يُرجى العِلم أنّه يجب استدعاء returnResponse لإرسال الردّ إلى العميل.
مثال
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
البنية
setCookie(name, value[, options[, noEncode]]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
name |
string | اسم ملف تعريف الارتباط الاسم غير حسّاس لحالة الأحرف. |
value |
string | قيمة ملف تعريف الارتباط |
options |
object | سمات ملفات تعريف الارتباط الاختيارية:domain وexpires وfallbackDomain وhttpOnly وmax-age وpath وsecure وsameSite. (يُرجى الاطّلاع على الخيارات أدناه). |
noEncode |
boolean |
إذا كانت القيمة صحيحة، لن يتم ترميز قيمة ملف تعريف الارتباط. القيمة التلقائية هي
false.
|
domain: المضيف الذي سيتم إرسال ملف تعريف الارتباط إليه. في حال ضبطه على القيمة الخاصة "auto"، سيتم احتساب المضيف تلقائيًا باستخدام الاستراتيجية التالية:
- النطاق ذو المستوى الأعلى الفعلي (eTLD) + 1 لرأس
Forwarded، إن توفّر - النطاق ذو المستوى الأعلى الفعلي (eTLD) + 1 لرأس
X-Forwarded-Host، إن توفّر - eTLD+1 من عنوان
Host
- النطاق ذو المستوى الأعلى الفعلي (eTLD) + 1 لرأس
expires: الحد الأقصى لمدة صلاحية ملف تعريف الارتباط. يجب أن تكون هذه القيمة سلسلة تاريخ بتنسيق التوقيت العالمي المنسق (UTC)، مثل "Sat, 26 Oct 1985 08:21:00 GMT". في حال ضبط كل من
expiresوmax-age، تكون الأولوية لـmax-age.httpOnly: تمنع JavaScript من الوصول إلى ملف تعريف الارتباط إذا كانت القيمة
true.max-age: عدد الثواني حتى تنتهي صلاحية ملف تعريف الارتباط. سيؤدي الرقم صفر أو الرقم السالب إلى انتهاء صلاحية ملف تعريف الارتباط على الفور. في حال ضبط كل من
expiresوmax-age، تكون الأولوية لـmax-age.path: مسار يجب أن يكون متوفّرًا في عنوان URL المطلوب، وإلا لن يرسل المتصفّح عنوان ملف تعريف الارتباط.
secure: في حال ضبطه على
true، لا يتم إرسال ملف تعريف الارتباط إلى الخادم إلا عند تقديم طلب من نقطة نهايةhttps:.sameSite: تؤكّد أنّه يجب عدم إرسال ملف تعريف ارتباط مع طلبات متعدّدة المصادر. يجب أن تكون القيمة
'strict'أو'lax'أو'none'.
الأذونات المرتبطة
setPixelResponse
يضبط نص الردّ على ملف GIF بحجم 1x1، ويضبط عنوان Content-Type على "image/gif"، ويضبط عناوين التخزين المؤقت بحيث لا تخزّن برامج وكيل المستخدم الردّ مؤقتًا، ويضبط حالة الردّ على 200.
يُرجى العِلم أنّه يجب استدعاء returnResponse لإرسال الردّ إلى العميل.
البنية
setPixelResponse();
الأذونات المرتبطة
يتطلّب ذلك إذن access_response. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
headers- يجب السماح بالمفاتيح التاليةcontent-typecache-controlexpirespragma
bodystatus
setResponseBody
يضبط هذا الإجراء نص الرد على الوسيطة.
يُرجى العِلم أنّه يجب استدعاء returnResponse لإرسال الردّ إلى العميل.
البنية
setResponseBody(body[, encoding]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
body |
string | القيمة التي يجب ضبطها كنص الاستجابة |
encoding |
string |
ترميز الأحرف لنص الاستجابة (القيمة التلقائية هي
'utf8'). تشمل القيم المسموح بها 'ascii'
و'utf8' و'utf16le' و'ucs2'
و'base64' و'latin1' و'binary'
و'hex'.
|
الأذونات المرتبطة
يتطلّب ذلك إذن access_response. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
body
setResponseHeader
يضبط عنوانًا في الاستجابة التي سيتم عرضها. إذا سبق أن تم ضبط عنوان بهذا الاسم (غير حساس لحالة الأحرف) من خلال واجهة برمجة التطبيقات هذه، سيؤدي الطلب الأخير إلى استبدال القيمة التي ضبطها المتصل السابق أو محوها.
يُرجى العِلم أنّه يجب استدعاء returnResponse لإرسال الردّ إلى العميل.
البنية
setResponseHeader(name, value);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
name |
string | اسم العنوان لا تكون أسماء عناوين HTTP حساسة لحالة الأحرف، لذا سيتم استخدام الأحرف الصغيرة في اسم العنوان. |
value |
string undefined | قيمة العنوان إذا كانت القيمة فارغة أو غير محدّدة، سيؤدي ذلك إلى محو العنوان المُعنوَن من الاستجابة التي سيتم عرضها. |
الأذونات المرتبطة
يتطلّب ذلك إذن access_response. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
headers
setResponseStatus
يتم ضبط رمز حالة HTTP للاستجابة التي سيتم عرضها.
يُرجى العِلم أنّه يجب استدعاء returnResponse لإرسال الردّ إلى العميل.
البنية
setResponseStatus(statusCode);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
statusCode |
number | رمز حالة HTTP الذي سيتم عرضه. |
الأذونات المرتبطة
يتطلّب ذلك إذن access_response. يجب ضبط الإذن للسماح بالوصول إلى ما يلي على الأقل:
status
sha256
يتم احتساب ملخّص SHA-256 للإدخال واستدعاء دالة رد اتصال مع
الملخّص المرمّز في base64، ما لم يحدّد الكائن options ترميزًا مختلفًا
للإخراج.
يتطابق توقيع واجهة برمجة التطبيقات هذا وسلوكها مع واجهة برمجة التطبيقات sha256 لحاويات الويب، ولكن يجب أن تستخدم النماذج المخصّصة في حاويات الخادم واجهة برمجة التطبيقات sha256Sync للحصول على رمز أبسط.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
البنية
sha256(input, onSuccess, options = undefined);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
input |
string | السلسلة المطلوب تجزئتها |
onSuccess |
function |
يتم استدعاؤها باستخدام الملخّص الناتج، المرمّز بترميز base64، ما لم يحدّد الكائن options ترميزًا مختلفًا للناتج.
|
options |
object |
اختياري كائن خيارات لتحديد ترميز الإخراج. في حال تحديد هذا الحقل، يجب أن يحتوي العنصر على المفتاح outputEncoding مع قيمة base64 أو hex.
|
الأذونات المرتبطة
بلا عُري
sha256Sync
تحتسب هذه الدالة ملخّص SHA-256 للإدخال وترجعه، بترميز base64،
ما لم يحدّد الكائن options ترميزًا مختلفًا للناتج.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
البنية
sha256Sync(input, options = undefined);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
input |
string | السلسلة المطلوب تجزئتها |
options |
object |
اختياري كائن خيارات لتحديد ترميز الإخراج. في حال تحديد هذا الحقل، يجب أن يحتوي العنصر على المفتاح outputEncoding مع قيمة base64 أو hex.
|
الأذونات المرتبطة
بلا عُري
templateDataStorage
تعرض عنصرًا يتضمّن طرقًا للوصول إلى مساحة تخزين بيانات النماذج. يسمح تخزين بيانات النماذج بمشاركة البيانات في جميع عمليات تنفيذ نموذج واحد. تظل البيانات المخزّنة في مساحة تخزين بيانات النماذج محفوظة على الخادم الذي يشغّل الحاوية. في معظم الحالات، هناك خوادم متعددة تشغّل الحاوية، لذا فإنّ تخزين البيانات في مساحة تخزين بيانات النماذج لا يضمن أنّ كل طلب لاحق سيتمكّن من الوصول إلى البيانات.
تشير كلمة "data" في الاسم "templateDataStorage" إلى أنّه يمكن تخزين أنواع البيانات البسيطة فقط،
وليس الدوال، باستخدام واجهة برمجة التطبيقات هذه. وأي دوال أو مراجع لدوال يتم تمريرها إلى واجهة برمجة التطبيقات سيتم تخزينها كـ null بدلاً من ذلك.
البنية
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
مثال
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
الأذونات المرتبطة
testRegex
تختبر هذه الدالة سلسلة مقابل تعبير نمطي تم إنشاؤه من خلال واجهة برمجة التطبيقات createRegex. تعرض true إذا كان التعبير النمطي متطابقًا. وتعرض false في الحالات الأخرى.
التعبير النمطي الذي تم إنشاؤه باستخدام العلامة العامة يكون ذو حالة. لمزيد من التفاصيل، يُرجى الاطّلاع على مستندات RegExp.
مثال
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
البنية
testRegex(regex, string);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
regex |
Object | التعبير النمطي المطلوب اختباره، والذي يتم عرضه من واجهة برمجة التطبيقات createRegex. |
string |
string | سلسلة اختبارية للاختبار. |
الأذونات المرتبطة
بلا عُري
toBase64
لترميز سلسلة كـ base64 أو base64url القيمة التلقائية هي ترميز base64.
البنية
toBase64(input, options);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
input |
string | السلسلة المطلوب ترميزها |
options
|
object | اختياري إعداد واجهة برمجة التطبيقات. (يُرجى الاطّلاع على الخيارات أدناه). |
الخيارات
| Option | النوع | الوصف | الحد الأدنى للإصدار |
|---|---|---|---|
urlEncoding
|
boolean | إذا كانت القيمة صحيحة، سيتم ترميز النتيجة باستخدام تنسيق base64url. |
1.0.0 |
مثال
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
الأذونات المرتبطة
بلا عُري
BigQuery
تعرِض هذه الدالة عنصرًا يوفّر دوال BigQuery.
تتيح الدالة BigQuery.insert كتابة البيانات في جدول BigQuery. وتعرض هذه الطريقة وعدًا يتم الوفاء به عند نجاح عملية الإدراج أو رفضه عند حدوث خطأ.
عند نجاح عملية الإدراج، يتم تنفيذ الوعد بدون أي وسيطات.
عند تعذُّر الإدراج، يتم رفض الوعد بقائمة من العناصر التي تحتوي على سبب الخطأ وربما عنصر صف في حال حدوث خطأ. من الممكن أن يكتمل جزء من الطلب بنجاح، بينما لا تكتمل الأجزاء الأخرى. يتم رفض الوعد في هذه الحالة مع قائمة بالأخطاء لكل صف مع عنصر صف للمساعدة في تمييز الصفوف التي تم إدراجها (انظر أمثلة على الأخطاء أدناه). لمزيد من المعلومات، يُرجى الاطّلاع على مستندات BigQuery حول رسائل الخطأ.
البنية
BigQuery.insert(connectionInfo, rows[, options]);
| المَعلمة | النوع | الوصف |
|---|---|---|
connectionInfo |
object |
تحدّد هذه السمة المعلومات المطلوبة للربط بجدول BigQuery. هناك مَعلمة واحدة اختيارية ومَعلمتان مطلوبتان:
|
rows |
Array | الصفوف المطلوب إدراجها في الجدول |
options |
object | خيارات الطلب الاختيارية الخيارات المتوافقة هي: ignoreUnknownValues و skipInvalidRows. يتم تجاهل مفاتيح الخيارات غير المعروفة. (يُرجى الاطّلاع على الخيارات أدناه). |
| المَعلمة | النوع | الوصف |
|---|---|---|
ignoreUnknownValues |
boolean | في حال ضبطها على true، يتم قبول الصفوف التي تحتوي على قيم
لا تتطابق مع المخطط. ويتم تجاهل القيم غير المعروفة. القيمة التلقائية هي false. |
skipInvalidRows |
boolean | في حال ضبطها على true، يتم إدراج جميع الصفوف الصالحة في الطلب،
حتى في حال وجود صفوف غير صالحة. القيمة التلقائية هي false. |
يشير خطأ "لم يتم العثور على الوحدة" إلى أنّ حاوية الخادم تستخدم على الأرجح إصدارًا قديمًا من صورتنا لا يتضمّن وحدة BigQuery بعد. يُرجى إعادة نشر حاوية الخادم بالإعدادات نفسها باستخدام نص النشر البرمجي. سيتم تضمين الوحدة تلقائيًا بعد انتهاء العملية.
عادةً ما يحتوي خطأ عدم الإدراج على عنصر خطأ واحد يتضمّن مفتاح reason:
[{reason: 'invalid'}]
يمكن أن يحتوي خطأ الإدراج على عناصر خطأ متعددة مع مصفوفة errors وعنصر row. في ما يلي مثال على استجابة خطأ من
إدراج صفين حيث يحتوي صف واحد فقط على خطأ:
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
مثال
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
الأذونات المرتبطة
Firestore
تعرض هذه الدالة عنصرًا يوفّر دوال Firestore.
تتوافق واجهة برمجة التطبيقات هذه مع Firestore في الوضع الأصلي فقط، وليس Firestore في وضع Datastore. بالإضافة إلى ذلك، لا تتيح واجهة برمجة التطبيقات سوى استخدام قاعدة البيانات التلقائية.
Firestore.read
تقرأ الدالة Firestore.read البيانات من مستند Firestore
وتعرض وعدًا يتم تحليله إلى عنصر يحتوي على مفتاحَين:
id وdata. إذا لم يكن المستند متوفّرًا، يتم رفض الوعد باستخدام عنصر يحتوي على مفتاح reason يساوي not_found.
البنية
Firestore.read(path[, options]);
| المَعلمة | النوع | الوصف |
|---|---|---|
path |
string | يمثّل هذا العمود المسار إلى المستند أو المجموعة. يجب ألا يبدأ أو ينتهي بشرطة مائلة "/". |
options |
object | خيارات الطلب الاختيارية الخيارات المتاحة هي: projectId وdisableCache وtransaction. يتم تجاهل مفاتيح الخيارات غير المعروفة. (يُرجى الاطّلاع على الخيارات أدناه). |
| المَعلمة | النوع | الوصف |
|---|---|---|
projectId |
string | Optional. رقم تعريف مشروع Google Cloud Platform في حال حذف هذه السمة، يتم استرداد projectId من متغيّر البيئة GOOGLE_CLOUD_PROJECT طالما أنّ إعدادات الإذن access_firestore لرقم تعريف المشروع مضبوطة على * أو GOOGLE_CLOUD_PROJECT. إذا كانت حاوية الخادم تعمل على Google Cloud، سيتم ضبط GOOGLE_CLOUD_PROJECT على رقم تعريف مشروع على السحابة الإلكترونية لـ Google Cloud. |
disableCache |
boolean | Optional. تحدّد هذه السياسة ما إذا كان سيتم إيقاف ذاكرة التخزين المؤقت أم لا. يتم تفعيل التخزين المؤقت تلقائيًا، ما يؤدي إلى تخزين النتائج مؤقتًا طوال مدة الطلب. |
transaction |
string | Optional. تمثّل هذه المَعلمة القيمة التي تم استردادها من Firestore.runTransaction()، وتحدّد العملية التي سيتم استخدامها ضمن معاملة. |
مثال
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
تكتب الدالة Firestore.write البيانات في مستند أو مجموعة في Firestore. إذا كان المسار يؤدّي إلى مجموعة، سيتم إنشاء مستند باستخدام معرّف
يتم إنشاؤه عشوائيًا. إذا كان المسار يؤدّي إلى مستند غير موجود، سيتم إنشاؤه. تعرض واجهة برمجة التطبيقات هذه وعدًا يتم حله إلى معرّف
المستند المضاف أو المعدّل. إذا تم استخدام خيار المعاملة، ستظل واجهة برمجة التطبيقات
تعرض وعدًا، ولكنها لن تحتوي على المعرّف لأنّ عمليات الكتابة يتم تجميعها.
البنية
Firestore.write(path, input[, options]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
path |
string | يمثّل هذا العمود المسار إلى المستند أو المجموعة. يجب ألا يبدأ أو ينتهي بشرطة مائلة "/". |
input |
object | القيمة المطلوب كتابتها في المستند إذا تم ضبط خيار الدمج، ستدمج واجهة برمجة التطبيقات المفاتيح من الإدخال في المستند. |
options |
object | خيارات الطلب الاختيارية الخيارات المتاحة هي: projectId وmerge وtransaction. يتم تجاهل مفاتيح الخيارات غير المعروفة. (يُرجى الاطّلاع على الخيارات أدناه). |
| المَعلمة | النوع | الوصف |
|---|---|---|
projectId |
string | Optional. رقم تعريف مشروع Google Cloud Platform في حال حذفها، يتم استرداد projectId من متغيّر البيئة GOOGLE_CLOUD_PROJECT طالما تم ضبط إعدادات الإذن access_firestore لرقم تعريف المشروع على * أو GOOGLE_CLOUD_PROJECT. إذا كانت حاوية الخادم تعمل على Google Cloud، سيتم ضبط GOOGLE_CLOUD_PROJECT على رقم تعريف مشروع على السحابة الإلكترونية لـ Google Cloud. |
merge |
boolean | Optional. إذا تم ضبطها على
true، يتم دمج المفاتيح من الإدخال في المستند،
وإلا ستلغي الطريقة المستند بأكمله. القيمة التلقائية هي
false. |
transaction |
string | Optional. تمثّل هذه المَعلمة القيمة التي تم استردادها من Firestore.runTransaction()، وتحدّد العملية التي سيتم استخدامها ضمن معاملة. |
مثال
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
تُرسل الدالة Firestore.query طلب بحث إلى المجموعة المحدّدة وتعرض
وعدًا يتم تحويله إلى مصفوفة من مستندات Firestore التي تتطابق مع شروط
طلب البحث. كائن مستند Firestore هو نفسه المذكور أعلاه في
Firestore.read. إذا لم تكن هناك مستندات تتطابق مع شروط طلب البحث،
سيتم حلّ الوعد الذي تم إرجاعه إلى مصفوفة فارغة.
البنية
Firestore.query(collection, queryConditions[, options]);
| المَعلمة | النوع | الوصف |
|---|---|---|
collection |
string | يمثّل هذا العمود المسار إلى المجموعة. يجب ألا يبدأ أو ينتهي بشرطة مائلة "/". |
queryConditions |
Array | مصفوفة من شروط طلب البحث يتم تقديم كل طلب بحث في شكل مصفوفة تتضمّن ثلاث قيم: key وoperator وexpectedValue. مثلاً:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. يتم دمج الشروط معًا باستخدام عامل التشغيل AND لإنشاء نتيجة طلب البحث. يُرجى الرجوع إلى عوامل تشغيل طلبات البحث في Firestore للحصول على قائمة بعوامل تشغيل طلبات البحث المتوافقة. |
options |
object | خيارات الطلب الاختيارية الخيارات المتوافقة هي: projectId وdisableCache وlimit وtransaction. يتم تجاهل مفاتيح الخيارات غير المعروفة. (يُرجى الاطّلاع على الخيارات أدناه). |
| المَعلمة | النوع | الوصف |
|---|---|---|
projectId |
string | Optional. رقم تعريف مشروع Google Cloud Platform في حال حذف هذه السمة، يتم استرداد projectId من متغيّر البيئة GOOGLE_CLOUD_PROJECT طالما أنّ إعدادات الإذن access_firestore لرقم تعريف المشروع مضبوطة على * أو GOOGLE_CLOUD_PROJECT. إذا كانت حاوية الخادم تعمل على Google Cloud، سيتم ضبط GOOGLE_CLOUD_PROJECT على رقم تعريف مشروع على السحابة الإلكترونية لـ Google Cloud. |
disableCache |
boolean | Optional. تحدّد هذه السياسة ما إذا كان سيتم إيقاف ذاكرة التخزين المؤقت أم لا. يتم تفعيل التخزين المؤقت تلقائيًا، ما يؤدي إلى تخزين النتائج مؤقتًا طوال مدة الطلب. |
limit |
number | Optional. تغيير الحد الأقصى لعدد النتائج التي يعرضها طلب البحث، وتكون القيمة التلقائية هي 5. |
transaction |
string | Optional. تمثّل هذه المَعلمة القيمة التي تم استردادها من Firestore.runTransaction()، وتحدّد العملية التي سيتم استخدامها ضمن معاملة. |
مثال
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
تتيح دالة Firestore.runTransaction للمستخدم القراءة والكتابة
من Firestore بشكل ذري. في حال حدوث تعارض في الكتابة المتزامنة أو تعارض آخر في المعاملة، ستتم إعادة محاولة إجراء المعاملة مرتين كحد أقصى. إذا تعذّر ذلك بعد ثلاث محاولات إجمالية، سترفض واجهة برمجة التطبيقات الطلب مع ظهور رسالة خطأ. تعرض واجهة برمجة التطبيقات هذه
وعدًا يتم حله إلى مصفوفة من معرّفات المستندات، لكل عملية كتابة،
إذا نجحت المعاملة، وسيتم رفضها مع ظهور الخطأ في حال تعذّر إكمالها.
البنية
Firestore.runTransaction(callback[, options]);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
callback |
function | عملية استدعاء يتم تنفيذها باستخدام معرّف معاملة من نوع سلسلة يمكن تمرير معرّف المعاملة إلى طلبات البيانات من واجهة برمجة التطبيقات للقراءة/الكتابة/الاستعلام. يجب أن تعرض دالّة ردّ الاتصال هذه عملية غير مكتملة. قد يتم تشغيل دالة الاستدعاء ثلاث مرات كحد أقصى قبل أن يتعذّر تنفيذها. |
options |
object | خيارات الطلب الاختيارية الخيار الوحيد المتوافق هو projectId. يتم تجاهل مفاتيح الخيارات غير المعروفة. (يُرجى الاطّلاع على الخيارات أدناه). |
| المَعلمة | النوع | الوصف |
|---|---|---|
projectId |
string | Optional. رقم تعريف مشروع Google Cloud Platform في حال حذف هذه السمة، يتم استرداد projectId من متغيّر البيئة GOOGLE_CLOUD_PROJECT طالما أنّ إعدادات الإذن access_firestore لرقم تعريف المشروع مضبوطة على * أو GOOGLE_CLOUD_PROJECT. إذا كانت حاوية الخادم تعمل على Google Cloud، سيتم ضبط GOOGLE_CLOUD_PROJECT على رقم تعريف مشروع على السحابة الإلكترونية لـ Google Cloud. |
مثال
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
تتوفّر الأخطاء في كل دالة من دوال Firestore، وسيتم رفضها مع عنصر يحتوي على مفتاح reason:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
يمكن أن تتضمّن أسباب الخطأ رموز أخطاء واجهة برمجة التطبيقات REST API في Firestore، على سبيل المثال لا الحصر.
الأذونات المرتبطة
JSON
تعرض هذه الدالة كائنًا يوفّر دوال JSON.
تحلّل الدالة parse() سلسلة JSON لإنشاء القيمة أو العنصر
الموضَّح في السلسلة. إذا تعذّر تحليل القيمة (على سبيل المثال، JSON غير صالح)،
ستعرض الدالة undefined. إذا لم تكن قيمة الإدخال سلسلة، سيتم فرض الإدخال على سلسلة.
تحوّل الدالة stringify() الإدخال إلى سلسلة JSON. إذا تعذّر تحليل القيمة (على سبيل المثال، إذا كان العنصر يحتوي على دورة)، ستعرض الطريقة undefined.
مثال
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
البنية
JSON.parse(stringInput);
JSON.stringify(value);
الأذونات المرتبطة
بلا عُري
Math
عنصر يوفّر دوال Math.
البنية
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
المعلّمات
يتم تحويل مَعلمات الدوال الرياضية إلى أرقام.
الأذونات المرتبطة
بلا عُري
Messages
تعمل واجهات برمجة التطبيقات التالية معًا للسماح بتمرير الرسائل بين أجزاء مختلفة من الحاوية.
addMessageListener
تضيف هذه الدالة دالة أخرى تستمع إلى رسالة من نوع معيّن. عند إرسال رسالة من هذا النوع باستخدام واجهة برمجة التطبيقات sendMessage (عادةً من خلال علامة)، سيتم تشغيل دالة الاستدعاء بشكل متزامن. يتم تشغيل دالة رد الاتصال باستخدام معلَمتَين:
messageType:stringmessage:Object
إذا تمت إضافة دالة الاستدعاء في برنامج، ستتلقّى دالة الاستدعاء رسائل من جميع الأحداث التي ينشئها هذا البرنامج. إذا كان من المفترض أن تتلقّى دالة الاستدعاء رسائل
من حدث معيّن فقط، اربط واجهة برمجة التطبيقات هذه بالحدث باستخدام bindToEvent
في دالة onStart الخاصة بواجهة برمجة التطبيقات runContainer. اطّلِع على المثال.
البنية
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
messageType |
string | نوع الرسالة المطلوب الاستماع إليها إذا لم تكن القيمة سلسلة، سيتم تحويلها إلى سلسلة. |
callback |
function | عملية الاستدعاء التي يتم تنفيذها عند إرسال رسالة من نوع الرسالة الساري. إذا لم تكن دالة ردّ الاتصال دالة، لن تتخذ واجهة برمجة التطبيقات أي إجراء. |
مثال
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
الأذونات المرتبطة
يتطلّب ذلك إذن use_message. يجب ضبط الإذن للسماح
بما يلي على الأقل:
- نوع رسالة يتضمّن
Usageمنlistenأوlisten_and_send
hasMessageListener
تعرض القيمة "صحيح" إذا تمت إضافة مستمع للرسائل لنوع الرسالة المحدّد. وفي حال عدم عرض هذه البيانات، تُظهر القيمة "خطأ".
البنية
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
الأذونات المرتبطة
بلا عُري
sendMessage
يتم إرسال رسالة من النوع المحدّد إلى مستمع مسجَّل. ويمكن استخدام ذلك لإرسال رسائل من علامة إلى العميل الذي شغّل الحاوية.
البنية
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
messageType |
string | نوع الرسالة المطلوب إرسالها إذا لم تكن القيمة سلسلة، سيتم فرضها على سلسلة. |
message |
object | الرسالة المطلوب إرسالها إذا لم تكن الرسالة عنصرًا، لن تتخذ واجهة برمجة التطبيقات أي إجراء. |
الأذونات المرتبطة
يتطلّب ذلك إذن use_message. يجب ضبط الإذن للسماح
بما يلي على الأقل:
- نوع رسالة يتضمّن
Usageمنlisten_and_sendأوsend
Object
تعرض هذه السمة عنصرًا يوفّر طرق Object.
توفّر الطريقة keys() سلوك المكتبة العادية Object.keys(). تعرض هذه الدالة مصفوفة من أسماء السمات القابلة للتعداد الخاصة بكائن معيّن بالترتيب نفسه الذي تعرضه حلقة for...in.... إذا لم تكن قيمة الإدخال كائنًا، فسيتم إجبارها على أن تكون كائنًا.
توفّر الطريقة values() سلوك Object.values() في المكتبة العادية. تعرض هذه الدالة مصفوفة من قيم السمات القابلة للتعداد الخاصة بعنصر معيّن
بالترتيب نفسه الذي تعرضه حلقة for...in.... إذا لم تكن قيمة الإدخال كائنًا، سيتم فرضها على كائن.
توفّر الطريقة entries() سلوك Object.entries() في المكتبة العادية. تعرض هذه الدالة مصفوفة من أزواج
[key, value] للسمات القابلة للتعداد الخاصة بكائن معيّن بالترتيب نفسه الذي تعرضه حلقة for...in.... إذا لم تكن قيمة الإدخال عنصرًا، سيتم تحويلها إلى عنصر.
توفّر الطريقة freeze() سلوك Object.freeze()
في المكتبة العادية. لا يمكن تغيير الكائن المجمّد بعد ذلك؛ يمنع تجميد الكائن إضافة خصائص جديدة إليه، وإزالة الخصائص الموجودة، وتغيير قيم الخصائص الموجودة. تعرض الدالة freeze() الكائن نفسه الذي تم تمريره. سيتم التعامل مع الوسيطة الأولية أو الفارغة كما لو كانت عنصرًا مجمّدًا، وسيتم عرضها.
توفّر طريقة delete() سلوك عامل الحذف في المكتبة العادية. تزيل هذه الدالة المفتاح المحدّد من العنصر ما لم يكن العنصر مجمّدًا.
مثل عامل التشغيل delete في المكتبة العادية، تعرض هذه الدالة القيمة true إذا كانت قيمة الإدخال الأولى (objectInput) كائنًا غير مجمّد حتى إذا كانت قيمة الإدخال الثانية (keyToDelete) تحدّد مفتاحًا غير موجود. وتُعرض القيمة false في
جميع الحالات الأخرى. ومع ذلك، يختلف عن عامل التشغيل delete في المكتبة العادية
في النواحي التالية:
- لا يمكن أن تكون السمة
keyToDeleteسلسلة نصية محدّدة بنقاط تحدّد مفتاحًا مدمجًا. - لا يمكن استخدام
delete()لإزالة عناصر من مصفوفة. - لا يمكن استخدام
delete()لإزالة أي سمات من النطاق العام.
البنية
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
المعلّمات
Object.keys
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | any | تمثّل هذه السمة الكائن الذي سيتم تعداد مفاتيحه. إذا لم يكن الإدخال كائنًا، سيتم تحويله إلى كائن. |
Object.values
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | any | تمثّل هذه السمة العنصر الذي سيتم تعداد قيمه. إذا لم يكن الإدخال كائنًا، سيتم تحويله إلى كائن. |
Object.entries
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | any | تمثّل هذه السمة الكائن الذي سيتم تعداد أزواج المفاتيح/القيم الخاصة به. إذا لم يكن الإدخال كائنًا، سيتم تحويله إلى كائن. |
Object.freeze
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | any | تمثّل هذه المَعلمة العنصر المطلوب تجميده. إذا لم يكن الإدخال كائنًا، سيتم التعامل معه ككائن مجمّد. |
Object.delete
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | any | تمثّل هذه المَعلمة العنصر الذي سيتم حذف مفتاحه. |
| keyToDelete | string | المفتاح ذو المستوى الأعلى المطلوب حذفه |
مثال
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
تعرض هذه الطريقة عنصرًا يوفّر طرقًا للتفاعل مع الوعود.
تُعدّ الوعود مكافئة من الناحية الوظيفية لوعود JavaScript. يحتوي كل مثيل على ثلاث طرق تعرض كائن Promise يسمح باتخاذ إجراء إضافي عند تسوية كائن Promise:
-
.then(): يعالج الطلبات التي تم حلّها وتلك المرفوضة. ويستغرق الأمر عمليتَي استدعاء كمَعلمتَين: واحدة لحالة النجاح والأخرى لحالة الفشل. -
.catch(): يعالج الحالات المرفوضة فقط. تتطلب دالة رد اتصال واحدة كمعلمة. .finally()- يوفّر طريقة لتشغيل الرمز سواء تم حلّ الوعد أو رفضه. تتطلب دالة رد اتصال واحدة كمعلَمة يتم استدعاؤها بدون وسيطة.
المتغيّر الذي يعرض وعدًا يساوي القيمة التي تم حلّها للوعد، أو
false إذا تم رفض الوعد.
مثال
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
تعرض هذه الدالة وعدًا بأحد الخيارَين التاليَين:
- يتم حلّها عندما يتم حلّ جميع المدخلات، أو
- يرفض عندما يرفض أي من المدخلات
البنية
Promise.all(inputs);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
inputs |
Array | مصفوفة من القيم أو الوعود إذا لم يكن الإدخال وعدًا، يتم تمريره كما لو كان القيمة التي تم حلّها للوعد. يتم عرض خطأ إذا لم يكن الإدخال مصفوفة. |
مثال
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
الأذونات المرتبطة
بلا عُري
Promise.create
تنشئ وعدًا مكافئًا من الناحية الوظيفية لوعد JavaScript.
البنية
Promise.create(resolver);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
resolver |
function | دالة يتم استدعاؤها باستخدام دالتَين، وهما resolve وreject سيتم حلّ أو رفض الوعد الذي تم إرجاعه عند استدعاء المَعلمة المقابلة. يتم عرض خطأ إذا لم يكن المحلّل دالة. |
مثال
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
الأذونات المرتبطة
بلا عُري
واجهات برمجة التطبيقات الاختبارية
تعمل واجهات برمجة التطبيقات هذه مع اختبارات JavaScript المعزولة لإنشاء اختبارات للنماذج المخصّصة في أداة "إدارة العلامات من Google". لا تحتاج واجهات برمجة التطبيقات الاختبارية هذه إلى عبارة require(). [مزيد من المعلومات عن اختبارات النماذج المخصّصة]
assertApi
تعرض هذه الطريقة عنصر مطابقة يمكن استخدامه لإجراء تأكيدات بطلاقة حول واجهة برمجة التطبيقات المحدّدة.
البنية
assertApi(apiName)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
apiName |
string | اسم واجهة برمجة التطبيقات المطلوب التحقّق منها، وهو السلسلة نفسها التي تم تمريرها إلى
require().
|
Matchers
Subject.wasCalled()Subject.wasNotCalled()Subject.wasCalledWith(...expected)Subject.wasNotCalledWith(...expected)
أمثلة
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
تستند واجهة برمجة التطبيقات assertThat إلى مكتبة [Truth] من Google. وتعرض كائنًا يمكن استخدامه لإجراء تأكيدات بطلاقة حول قيمة موضوع ما. سيؤدي فشل التأكيد إلى إيقاف الاختبار على الفور ووضع علامة عليه على أنه فاشل. ومع ذلك، فإن الفشل في اختبار واحد لن يؤثر على إطارات الاختبار الأخرى.
البنية
assertThat(actual, opt_message)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
actual |
any | القيمة المطلوب استخدامها في عمليات التحقّق السلسة |
opt_message |
string | رسالة اختيارية لطباعتها في حال تعذّر التأكيد |
Matchers
| Matcher | الوصف |
|---|---|
isUndefined() |
يؤكّد أنّ الموضوع هو undefined. |
isDefined() |
يؤكّد أنّ الموضوع ليس undefined. |
isNull() |
يؤكّد أنّ الموضوع هو null. |
isNotNull() |
تؤكّد أنّ الموضوع ليس null. |
isFalse() |
يؤكّد أنّ الموضوع هو false. |
isTrue() |
يؤكّد أنّ الموضوع هو true. |
isFalsy() |
تؤكّد أنّ الموضوع خاطئ. القيم الخاطئة هي
undefined وnull وfalse
وNaN و0 و '' (سلسلة فارغة). |
isTruthy() |
تؤكّد أنّ الموضوع صحيح. القيم الخاطئة هي
undefined وnull وfalse
وNaN و0 و '' (سلسلة فارغة). |
isNaN() |
تؤكّد أنّ الموضوع هو القيمة NaN. |
isNotNaN() |
تؤكّد أنّ الموضوع هو أي قيمة باستثناء NaN. |
isInfinity() |
تؤكّد أنّ الموضوع هو "ما لا نهاية" موجب أو سالب. |
isNotInfinity() |
تؤكّد أنّ الموضوع هو أي قيمة بخلاف اللانهاية الموجبة أو السالبة. |
isEqualTo(expected) |
تؤكّد أنّ الموضوع يساوي القيمة المحدّدة. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
isNotEqualTo(expected) |
تؤكّد أنّ الموضوع لا يساوي القيمة المحدّدة. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
isAnyOf(...expected) |
تؤكّد أنّ الموضوع يساوي إحدى القيم المحدّدة. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
isNoneOf(...expected) |
تؤكّد أنّ الموضوع لا يساوي أيًا من القيم المحدّدة. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
isStrictlyEqualTo(expected) |
تؤكّد أنّ الموضوع يساوي تمامًا (===)
القيمة المحدّدة. |
isNotStrictlyEqualTo(expected) |
تؤكّد أنّ الموضوع لا يساوي تمامًا (!==)
القيمة المحدّدة. |
isGreaterThan(expected) |
تؤكّد أنّ الموضوع أكبر من (>) القيمة المحدّدة في مقارنة مرتبة. |
isGreaterThanOrEqualTo(expected) |
تؤكّد أنّ الموضوع أكبر من أو يساوي (>=) القيمة المحدّدة في مقارنة مرتّبة. |
isLessThan(expected) |
تؤكّد أنّ الموضوع أقل من (<) القيمة المحدّدة في مقارنة مرتبة. |
isLessThanOrEqualTo(expected) |
تؤكّد هذه الدالة أنّ الموضوع أقل من أو يساوي (<=)
القيمة المحدّدة في مقارنة مرتّبة. |
contains(...expected) |
تؤكّد أنّ الموضوع هو مصفوفة أو سلسلة تحتوي على جميع القيم المحدّدة بأي ترتيب. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
doesNotContain(...expected) |
تؤكّد أنّ الموضوع عبارة عن مصفوفة أو سلسلة لا تحتوي على أي من القيم المحددة. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
containsExactly(...expected) |
تؤكّد أنّ الموضوع هو مصفوفة تحتوي على جميع القيم المحدّدة بأي ترتيب وبدون أي قيم أخرى. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
doesNotContainExactly(...expected) |
تؤكّد أنّ الموضوع عبارة عن مصفوفة تحتوي على مجموعة مختلفة من القيم من القيم المحدّدة بأي ترتيب. هذه مقارنة بين القيم، وليست مقارنة بين المراجع. تتم مقارنة محتوى العناصر والمصفوفات بشكل متكرر. |
hasLength(expected) |
تؤكّد أنّ الموضوع عبارة عن مصفوفة أو سلسلة بالطول المحدّد. يفشل التأكيد دائمًا إذا لم تكن القيمة مصفوفة أو سلسلة. |
isEmpty() |
تؤكّد أنّ الموضوع عبارة عن مصفوفة أو سلسلة فارغة (الطول = 0). يفشل التأكيد دائمًا إذا لم تكن القيمة مصفوفة أو سلسلة. |
isNotEmpty() |
تؤكّد أنّ الموضوع عبارة عن مصفوفة أو سلسلة غير فارغة (الطول > 0). ويفشل التأكيد دائمًا إذا لم تكن القيمة مصفوفة أو سلسلة. |
isArray() |
تؤكّد أنّ نوع الموضوع هو مصفوفة. |
isBoolean() |
تؤكّد أنّ نوع الموضوع هو قيمة منطقية. |
isFunction() |
تؤكّد أنّ نوع الموضوع هو دالة. |
isNumber() |
تؤكّد أنّ نوع الموضوع هو رقم. |
isObject() |
تؤكّد أنّ نوع الموضوع هو كائن. |
isString() |
تؤكّد أنّ نوع الموضوع هو سلسلة. |
أمثلة
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
يؤدي هذا الإجراء إلى فشل الاختبار الحالي على الفور وطباعة الرسالة المحدّدة، في حال توفّرها.
البنية
fail(opt_message);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
opt_message |
string | نص رسالة الخطأ الاختياري |
مثال
fail('This test has failed.');
mock
تتيح لك واجهة برمجة التطبيقات mock إلغاء سلوك واجهات برمجة التطبيقات في وضع الحماية. يمكن استخدام واجهة برمجة التطبيقات الوهمية بأمان في رمز النموذج، ولكنّها تعمل فقط في وضع الاختبار.
تتم إعادة ضبط المحاكاة قبل إجراء كل اختبار.
البنية
mock(apiName, returnValue);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
apiName |
string | اسم واجهة برمجة التطبيقات المطلوب محاكاتها، وهو السلسلة نفسها التي تم تمريرها إلى
require() |
returnValue |
any | القيمة التي يتم عرضها لواجهة برمجة التطبيقات أو دالة يتم استدعاؤها بدلاً من
واجهة برمجة التطبيقات. إذا كانت السمة returnValue دالة، يتم استدعاء هذه الدالة بدلاً من واجهة برمجة التطبيقات في وضع الحماية. وإذا كانت السمة returnValue أي شيء آخر غير الدالة، يتم عرض هذه القيمة بدلاً من واجهة برمجة التطبيقات في وضع الحماية. |
أمثلة
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
تتيح لك واجهة برمجة التطبيقات mockObject إلغاء سلوك واجهات برمجة التطبيقات في وضع الحماية التي
تعرض عنصرًا. يمكن استخدام واجهة برمجة التطبيقات بأمان في رمز النموذج، ولكنّها تعمل
في وضع الاختبار فقط. تتم إعادة ضبط المحاكاة قبل إجراء كل اختبار.
البنية
mockObject(apiName, objectMock);
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
apiName |
string | اسم واجهة برمجة التطبيقات المطلوب محاكاتها، وهو السلسلة نفسها التي تم تمريرها إلى
require() |
objectMock |
object | القيمة التي يتم عرضها لواجهة برمجة التطبيقات أو دالة يتم استدعاؤها بدلاً من واجهة برمجة التطبيقات. يجب أن يكون عنصرًا. |
أمثلة
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
يؤدي هذا الإجراء إلى تشغيل الرمز البرمجي للنموذج، أي محتوى علامة التبويب الرمز البرمجي، في بيئة الاختبار الحالية مع عنصر بيانات إدخال معيّن.
البنية
runCode(data)
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
data |
object | عنصر البيانات الذي سيتم استخدامه في الاختبار. |
القيمة المعروضة
تعرض قيمة متغيّر لنماذج المتغيّرات، وتعرض undefined لجميع أنواع النماذج الأخرى.
مثال
runCode({field1: 123, field2: 'value'});