يوضّح هذا المستند واجهات برمجة التطبيقات لوضع العلامات من جهة الخادم.
addEventCallback
تسجّل هذه السمة دالة رد اتصال سيتم استدعاؤها في نهاية أحد الأحداث. سيتم استدعاء دالة الرجوع عند تنفيذ جميع العلامات الخاصة بالحدث. يتم تمرير قيمتين إلى دالة callback: رقم تعريف الحاوية التي تستدعي الدالة وكائن يحتوي على معلومات حول الحدث.
عند استخدام واجهة برمجة التطبيقات هذه في علامة، يتم ربطها بالحدث الحالي. عند استخدام واجهة برمجة التطبيقات هذه في برنامج، يجب ربطها بحدث معيّن باستخدام الدالة bindToEvent في واجهة برمجة التطبيقات runContainer. يمكنك الاطّلاع على
المثال لمزيد من التفاصيل.
البنية
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
المعلّمات
| المَعلمة | النوع | الوصف |
|---|---|---|
callback |
function | الدالة التي سيتم استدعاؤها في نهاية الحدث |
يحتوي العنصر eventData على البيانات التالية:
| اسم المفتاح | النوع | الوصف |
|---|---|---|
tags |
المصفوفة |
مصفوفة من عناصر بيانات العلامات سيحتوي هذا الصفيف على إدخال لكل علامة تم تشغيلها أثناء الحدث. يحتوي عنصر بيانات العلامة على معرّف العلامة (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 |
معرّف موارد موحّد تم ترميزه باستخدام 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 | معرّف موارد منتظم كامل |
الأذونات المرتبطة
بلا عُري
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 الإصدار 1 الوارد إلى قائمة أحداث بتنسيق Unified Schema. تعرض هذه الطريقة قائمة بالأحداث المستخرَجة. يُظهر هذا الرمز خطأ إذا كان الطلب بالتنسيق غير الصحيح.
مثال
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 الإصدار 2 الوارد إلى قائمة أحداث بتنسيق Unified Schema. تعرض هذه الطريقة قائمة بالأحداث المستخرَجة. يُظهر هذا الرمز خطأ إذا كان الطلب بالتنسيق غير الصحيح.
مثال
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();
الأذونات المرتبطة
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 |
أي |
مسار المفتاح، حيث يتم فصل عناصر المسار بواسطة نقاط. يمكن أن تكون عناصر المسار عبارة عن مفاتيح في عنصر أو مؤشرات في مصفوفة. إذا لم يكن keyPath سلسلة، يتم تحويله إلى سلسلة.
|
البنية
getEventData(keyPath);
الأذونات المرتبطة
getGoogleAuth
تعرض هذه الدالة عنصر تفويض، وعند استخدامه مع sendHttpGet أو sendHttpRequest، سيتم تضمين عنوان تفويض لواجهات برمجة التطبيقات في Google Cloud. تستخدم واجهة برمجة التطبيقات هذه بيانات الاعتماد التلقائية للتطبيق للعثور تلقائيًا على بيانات الاعتماد من بيئة الخادم.
مثال
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
|
المصفوفة | مصفوفة من نطاقات OAuth 2.0 في Google API التي يجب طلب الوصول إليها. |
الأذونات المرتبطة
يتطلّب الحصول على إذن 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 Analytics البرمجي من
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 |
أي | إذا كانت القيمة صحيحة، سيتم طلب نسخة تصحيح الأخطاء من البرنامج النصي للقياس وعرضها. |
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'، كسلسلة string.
مثال
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' |
| الكائن | '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 |
أي | قيمة الإدخال |
الأذونات المرتبطة
بلا عُري
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 الإصدار 1، أو false في الحالات الأخرى.
مثال
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
البنية
isRequestMpv1();
الأذونات المرتبطة
بلا عُري
isRequestMpv2
تعرِض هذه السمة القيمة true إذا كان الطلب الوارد هو طلب Measurement Protocol الإصدار 2، أو القيمة 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 4"، إلى رقم تعريف القياس في بيانات الحدث.
يتم ضبط الحقل 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
يرسل طلب HTTP GET إلى عنوان URL المحدّد، ويعرض وعدًا يتم تنفيذه مع النتيجة بعد اكتمال الطلب أو انتهاء مهلته.
النتيجة التي تمّ حلّها هي عنصر يحتوي على ثلاثة مفاتيح: statusCode وheaders وbody. إذا تعذّر تنفيذ الطلب (مثل عنوان URL غير صالح أو عدم توفّر مسار إلى المضيف أو تعذّر التفاوض بشأن بروتوكول SSL وما إلى ذلك)، سيتم رفض الوعد مع: {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 غير صالح أو عدم توفّر مسار إلى المضيف أو تعذّر التفاوض بشأن بروتوكول SSL وما إلى ذلك)، سيتم رفض الوعد مع: {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 4" وعلامات الويب إحصاءات 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.
|
النطاق: المضيف الذي سيتم إرسال ملف تعريف الارتباط إليه. في حال ضبطه على القيمة الخاصة "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.المسار: هو مسار يجب أن يكون متوفّرًا في عنوان 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
تعرض هذه السمة عنصرًا يتضمّن طرقًا للوصول إلى مساحة تخزين بيانات النموذج. يتيح تخزين بيانات النموذج مشاركة البيانات بين عمليات تنفيذ نموذج واحد. تظل البيانات المخزَّنة في مساحة تخزين بيانات النماذج محفوظة على الخادم الذي يشغّل الحاوية. في معظم الحالات، تتوفّر خوادم متعدّدة تشغّل الحاوية، لذا فإنّ تخزين البيانات في مساحة تخزين بيانات النماذج لا يضمن إمكانية الوصول إلى البيانات في كل طلب لاحق.
تشير كلمة "البيانات" في الاسم "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 |
الكائن | التعابير العادية التي سيتم اختبارها، والتي يتم عرضها من createRegex API. |
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 |
المصفوفة | الصفوف المطلوب إدراجها في الجدول |
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 |
المصفوفة | مصفوفة من شروط طلب البحث يأتي كل طلب بحث على شكل صفيف يتضمّن ثلاث قيم: المفتاح وعامل التشغيل والقيمة المتوقّعة. مثلاً:
[[‘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 الخاصة بخدمة 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() سلوك عامل الحذف في "المكتبة العادية". تزيل هذه الطريقة المفتاح المحدّد من العنصر ما لم يكن العنصر مجمّدًا.
وكما هو الحال مع عامل الحذف في المكتبة العادية، يعرض هذا العامل القيمة true إذا كانت قيمة الإدخال الأولى (objectInput) عبارة عن عنصر غير مجمّد حتى إذا كانت قيمة الإدخال الثانية (keyToDelete) تحدّد مفتاحًا غير متوفّر. ويعرض القيمة false في جميع الحالات الأخرى. ومع ذلك، يختلف عن عامل الحذف في المكتبة العادية
في ما يلي:
- لا يمكن أن يكون
keyToDeleteسلسلة نصية مفصولة بنقاط تحدّد مفتاحًا متداخلاً. - لا يمكن استخدام
delete()لإزالة عناصر من مصفوفة. - لا يمكن استخدام
delete()لإزالة أي خصائص من النطاق العام.
البنية
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
المعلّمات
Object.keys
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | أي | العنصر الذي سيتم تعداد مفاتيحه. إذا لم يكن الإدخال كائنًا، سيتم تحويله إلى كائن. |
Object.values
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | أي | العنصر المطلوب تعداد قيمه. إذا لم يكن الإدخال عنصرًا، سيتم تحويله إلى عنصر. |
Object.entries
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | أي | الكائن الذي سيتم تعداد أزواج المفتاح/القيمة فيه. إذا لم يكن الإدخال كائنًا، سيتم تحويله إلى كائن. |
Object.freeze
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | أي | العنصر المطلوب تجميده إذا لم يكن الإدخال كائنًا، سيتم التعامل معه ككائن ثابت. |
Object.delete
| المَعلمة | النوع | الوصف |
|---|---|---|
| objectInput | أي | العنصر الذي سيتم حذف مفتاحه. |
| 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. يحتوي كل مثيل على ثلاث طرق تعرض وعدًا يتيح اتّخاذ إجراء إضافي عند تسوية الوعد:
-
.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 |
المصفوفة | مصفوفة من القيم أو الوعود إذا لم يكن الإدخال وعدًا، يتم تمرير الإدخال كما لو كان القيمة التي تم حلّها للوعد. تعرض هذه الدالة خطأ إذا لم يكن الإدخال عبارة عن مصفوفة. |
مثال
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().
|
أدوات المطابقة
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 |
أي | القيمة التي سيتم استخدامها في عمليات التحقّق السلسة. |
opt_message |
string | رسالة اختيارية للطباعة في حال تعذُّر التأكيد. |
أدوات المطابقة
| أداة المطابقة | الوصف |
|---|---|
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 |
أي | القيمة التي سيتم عرضها لواجهة برمجة التطبيقات أو دالة تم طلبها بدلاً من واجهة برمجة التطبيقات إذا كان returnValue دالة، يتم استدعاء هذه الدالة بدلاً من Sandboxed API. وإذا كان returnValue أي شيء آخر غير دالة، يتم عرض هذه القيمة بدلاً من Sandboxed API. |
أمثلة
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'});