במסמך הזה מפורטים ממשקי ה-API לתיוג בצד השרת.
addEventCallback
רושם פונקציית קריאה חוזרת (callback) שתופעל בסוף האירוע. הקריאה החוזרת תופעל כשכל התגים של האירוע יופעלו. הפונקציה החוזרת מקבלת שני ערכים: המזהה של מאגר התגים שמפעיל את הפונקציה ואובייקט שמכיל מידע על האירוע.
כשמשתמשים ב-API הזה בתג, הוא משויך לאירוע הנוכחי. כשמשתמשים ב-API הזה בלקוח, צריך לקשר אותו לאירוע ספציפי באמצעות הפונקציה bindToEvent של ה-API 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
כדי לתבוע בעלות על הבקשה, צריך להשתמש ב-API הזה בלקוח. אחרי שהבקשה נתבעת, הקונטיינר לא מפעיל לקוחות נוספים.
ה-API הזה מקפיץ הודעת שגיאה אם קוראים לו בתג או במשתנה. ה-API הזה יוצר חריגה אם קוראים לו אחרי שהלקוח מחזיר ערך (למשל, אם קוראים לו בקריאה חוזרת אסינכרונית כמו ב-callLater או בפונקציה runContainer onComplete).
הלקוח צריך לתבוע בעלות על הבקשה באמצעות ה-API הזה לפני שהוא קורא ל-API של runContainer.
דוגמה
const claimRequest = require('claimRequest');
claimRequest();
תחביר
claimRequest();
הרשאות משויכות
ללא.
computeEffectiveTldPlusOne
הפונקציה מחזירה את הדומיין ברמה העליונה בפועל + 1 (eTLD+1) של הדומיין או כתובת ה-URL שצוינו. ה-eTLD+1 מחושב על ידי הערכת הדומיין בהתאם לכללים של רשימת הסיומות הציבוריות. eTLD+1 הוא בדרך כלל הדומיין ברמה הכי גבוהה שאפשר להגדיר בו קובץ Cookie.
אם הארגומנט הוא null או לא מוגדר, ערך הארגומנט מוחזר ללא שינוי. אחרת, הארגומנט מומר למחרוזת. אם הארגומנט הוא לא דומיין או כתובת 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 |
מחרוזת | דומיין או כתובת URL שבהם צריך לחשב את ה-eTLD+1. |
הרשאות משויכות
ללא.
createRegex
יוצרת מופע חדש של ביטוי רגולרי ומחזירה אותו עטוף באובייקט. אי אפשר לגשת ישירות לביטוי הרגולרי. עם זאת, אפשר להעביר אותו ל-API של testRegex,
String.replace(), String.match() ו-String.search().
הפונקציה מחזירה את הערך null אם הביטוי הרגולרי לא תקין או אם Re2 לא זמין בשרת.
ה-API הזה משתמש בהטמעה של 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 |
מחרוזת | הטקסט של הביטוי הרגולרי. |
flags |
מחרוזת | מחרוזת אופציונלית שמכילה את הדגלים של הביטוי הרגולרי שנוצר. יש תמיכה ב-`g` (גלובלי) וב-`i` (התעלמות מאותיות רישיות). המערכת מתעלמת מכל שאר התווים. |
הרשאות משויכות
ללא.
גרסת התמונה המינימלית
decodeUri
מפענחת תווים מקודדים ב-URI שצוין. הפונקציה מחזירה מחרוזת שמייצגת את ה-URI המפוענח. אם הקלט לא תקין, הפונקציה מחזירה את הערך undefined.
דוגמה
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
תחביר
decodeUri(encoded_uri);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
encoded_uri |
מחרוזת |
URI שקודד באמצעות encodeUri() או באמצעים אחרים.
|
הרשאות משויכות
ללא.
decodeUriComponent
מפענחת תווים מקודדים ברכיב ה-URI שצוין. הפונקציה מחזירה מחרוזת שמייצגת את רכיב ה-URI המפוענח. אם הקלט לא תקין, הפונקציה מחזירה את הערך undefined.
דוגמה
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
תחביר
decodeUriComponent(encoded_uri_component);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
encoded_uri_component |
מחרוזת |
רכיב URI שקודד באמצעות encodeUriComponent() או באמצעים אחרים.
|
הרשאות משויכות
ללא.
encodeUri
הפונקציה מחזירה מזהה משאבים אחיד (URI) מקודד על ידי הוספת תווי בריחה (escape) לתווים מיוחדים. הפונקציה מחזירה מחרוזת שמייצגת את המחרוזת שצוינה, מקודדת כ-URI.
דוגמה
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
תחביר
encodeUri(uri);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
uri |
מחרוזת | URI מלא. |
הרשאות משויכות
ללא.
encodeUriComponent
הפונקציה מחזירה מזהה משאבים אחיד (URI) מקודד על ידי הוספת תווי בריחה (escape) לתווים מיוחדים. הפונקציה מחזירה מחרוזת שמייצגת את המחרוזת שצוינה, מקודדת כ-URI.
דוגמה
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
תחביר
encodeUriComponent(str);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
str |
מחרוזת | רכיב של URI. |
הרשאות משויכות
ללא.
extractEventsFromMpv1
הוא מתרגם בקשה נכנסת של Measurement Protocol V1 לרשימה של אירועים בפורמט 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 V2 לרשימה של אירועים בפורמט 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 |
מחרוזת | מחרוזת בקידוד 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
הפונקציה מחזירה מערך שמכיל את הערכים של כל קובצי ה-Cookie עם השם שצוין.
דוגמה
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
תחביר
getCookieValues(name[, noDecode]);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
name |
מחרוזת | שם קובץ ה-Cookie. |
noDecode |
boolean |
אם הערך הוא true, הערכים של קובצי ה-Cookie לא יפוענחו לפני שהם יוחזרו. ברירת המחדל היא 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
הפונקציה מחזירה אובייקט הרשאה, שכאשר משתמשים בו עם sendHttpGet או עם sendHttpRequest, הוא כולל כותרת הרשאה ל-Google Cloud APIs. ה-API הזה משתמש ב-Application Default Credentials כדי למצוא באופן אוטומטי את פרטי הכניסה מסביבת השרת.
דוגמה
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 APIs שרוצים לבקש גישה אליהם. |
הרשאות משויכות
נדרשת ההרשאה use_google_credentials. צריך להגדיר בהרשאה היקף מותר אחד או יותר.
getGoogleScript
אחזור של משאב מקבוצה מוגדרת מראש של סקריפטים של Google, והחזרה של promise עם הסקריפט והמטא-נתונים המשויכים לשמירה במטמון.
ה-promise יחזיר אובייקט שמכיל שני מפתחות: script ו-metadata. אם הבקשה נכשלת, ה-promise יידחה עם מפתח 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 |
מחרוזת |
שם הסקריפט. הסקריפטים הנתמכים הם
'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 | אפשרויות אופציונליות לבקשה. בהמשך מפורטות האפשרויות הנתמכות. |
אפשרויות
| אפשרות | סוג | תיאור |
|---|---|---|
id |
מחרוזת |
רלוונטי ל-'GTAG' עם מזהה המדידה של gtag ול-'GTM' עם מזהה מאגר התגים באינטרנט (למשל, GTM-XXXX).
|
debug |
any | אם הערך הוא true, המערכת מבקשת ומחזירה את גרסת ניפוי הבאגים של סקריפט המדידה. |
timeout |
number |
זמן הקצוב לתפוגה של הבקשה באלפיות השנייה. המערכת מתעלמת מערכים לא חיוביים. אם הזמן הקצוב לבקשה יסתיים, הקריאה החוזרת תופעל עם הערך undefined לסקריפט והערך {} לאובייקט המטא-נתונים.
|
המערכת מתעלמת ממפתחות של אפשרויות לא מזוהות.
הרשאות משויכות
נדרשת ההרשאה send_http. ההרשאה חייבת להיות מוגדרת כך שתאפשר גישה לפחות אל:
- אפשר להשתמש ב-Google Domains
getRemoteAddress
מחזירה ייצוג של מחרוזת של כתובת ה-IP שממנה הגיעה הבקשה, למשל 12.345.67.890 ל-IPv4 או 2001:0db8:85a3:0:0:8a2e:0370:7334 ל-IPv6, על ידי קריאת כותרות הבקשה כמו Forwarded ו-X-Forwarded-For.
הערה: ה-API הזה מנסה לגלות את כתובת ה-IP המקורית, אבל לא מבטיח שהתוצאה תהיה מדויקת.
תחביר
getRemoteAddress();
הרשאות משויכות
נדרשת ההרשאה read_request. ההרשאה צריכה להיות מוגדרת כך שתאפשר גישה לפחות אל:
- כותרות
Forwardedו-X-Forwarded-For - כתובת IP מרוחקת
getRequestBody
הפונקציה מחזירה את גוף הבקשה בתור string, אם הוא קיים, או undefined אם הוא לא קיים.
תחביר
getRequestBody();
הרשאות משויכות
getRequestHeader
הפונקציה מחזירה את הערך של כותרת הבקשה שצוינה בתור מחרוזת, אם היא קיימת, או את הערך undefined אם היא לא קיימת. אם הכותרת חוזרת על עצמה, הערכים שמוחזרים מחוברים יחד עם ', '.
דוגמה
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
תחביר
getRequestHeader(headerName);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
headerName |
מחרוזת | שם הכותרת. הערך הזה לא תלוי-רישיות. |
הרשאות משויכות
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 |
מחרוזת | השם של פרמטר השאילתה. |
הרשאות משויכות
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.
הפונקציה מחזירה מספר שמייצג את השעה הנוכחית באלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch), כפי שמוחזר על ידי Date.now().
תחביר
getTimestamp();
הרשאות משויכות
ללא.
getTimestampMillis
הפונקציה מחזירה מספר שמייצג את השעה הנוכחית באלפיות השנייה מאז ראשית זמן יוניקס (Unix epoch), כפי שמוחזר על ידי Date.now().
תחביר
getTimestampMillis();
הרשאות משויכות
ללא.
getType
הפונקציה מחזירה מחרוזת שמתארת את סוג הערך שצוין.
| סוג הקלט | הערך המוחזר |
|---|---|
| מחרוזת | '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 |
any | ערך הקלט. |
הרשאות משויכות
ללא.
hmacSha256
מחשב חתימה מקודדת באמצעות קוד אימות הודעות מבוסס-גיבוב (HMAC) עם SHA-256. ברירת המחדל היא קידוד base64url.
כדי להשתמש ב-API הזה, מגדירים את משתנה הסביבה SGTM_CREDENTIALS בשרת לנתיב של קובץ מפתח בפורמט JSON בקידוד UTF-8, בפורמט הבא:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
הערכים הם מפתחות HMAC בקידוד Base64. טקסט ה-JSON לא יכול להתחיל בסימון סדר בתים (BOM).
דוגמה
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 |
מחרוזת | הנתונים לחישוב ערך ה-HMAC. |
keyId
|
מחרוזת | מזהה מפתח מקובץ המפתח בפורמט JSON, שמתייחס למפתח שבו צריך להשתמש. |
options
|
object | הגדרת API אופציונלית. (ראו אפשרויות בהמשך). |
אפשרויות
| אפשרות | סוג | תיאור |
|---|---|---|
outputEncoding
|
מחרוזת | מציין את פורמט הקידוד של ערך ההחזרה. הפורמטים הנתמכים הם 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
רישום הארגומנטים במסוף.
אפשר לראות את היומנים האלה ב-Logs Explorer במסוף Google Cloud.
כדי לראות את רשומות היומן שנוצרו על ידי ה-API הזה, מריצים את השאילתה logName =~ "stdout" ב-Logs Explorer.
דוגמה
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
תחביר
logToConsole(argument1[, argument2, ...]);
פרמטרים
ה-API מקבל ארגומנט אחד או יותר, שכל אחד מהם מומר למחרוזת, אם צריך, ומתועד במסוף.
הרשאות משויכות
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 |
מחרוזת |
שם העמודה שהערכים שלה יהפכו למפתחות ב-Map שהומר.
|
valueColumnName |
מחרוזת |
שם העמודה שהערכים שלה יהפכו לערכים ב-Map שהומר.
|
הרשאות משויכות
ללא.
parseUrl
מחזירה אובייקט שמכיל את כל הרכיבים של כתובת URL נתונה, בדומה לאובייקט URL.
ה-API הזה יחזיר את הערך 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 |
מחרוזת | כתובת ה-URL המלאה שתנותח. |
הרשאות משויכות
ללא.
returnResponse
מנקה את התגובה שהוגדרה קודם על ידי תבניות אחרות באמצעות ממשקי ה-API שמשנים את התגובה, כולל setCookie, setPixelResponse, setResponseBody, setResponseHeader ו-setResponseStatus. ברירת המחדל היא קוד סטטוס של HTTP 200, גוף ריק וללא כותרות.
מומלץ להשתמש ב-API הזה מתבנית לקוח.
תחביר
returnResponse();
דוגמה
הרשאות משויכות
runContainer
ההרשאה מפעילה את הלוגיקה של מאגר התגים (משתנים, טריגרים, תגים) בהיקף של אירוע. אם ה-API הזה נקרא במהלך הפעלת מאגר, המאגר מופעל שוב.
הקריאות החוזרות (callbacks) של onComplete ו-onStart מקבלות פונקציה שנקראת bindToEvent. משתמשים ב-bindToEvent כדי להריץ API בהקשר של האירוע.
פרטים נוספים זמינים בדוגמה של addEventCallback.
מומלץ להשתמש ב-API הזה מתבנית לקוח.
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 | קריאה חוזרת (callback) שמופעלת אחרי שכל התגים מסיימים לפעול. |
onStart |
function | קריאה חוזרת (callback) שמופעלת מיד, לפני שהתגים מתחילים לפעול. |
הרשאות משויכות
sendEventToGoogleAnalytics
שולחת אירוע יחיד באמצעות נתוני אירועים נפוצים אל Google Analytics ומחזירה promise שמתקבל כאובייקט עם מפתח location או נדחה כאובייקט עם מפתח reason. היעד, Google Analytics, מבוסס על מזהה המדידה בנתוני האירוע.
השדה 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 Domains
sendHttpGet
שולחת בקשת HTTP GET לכתובת ה-URL שצוינה, ומחזירה promise שמתקבלת עם התוצאה כשהבקשה מסתיימת או כשהזמן הקצוב לתפוגה חולף.
התוצאה שמתקבלת היא אובייקט שמכיל שלושה מפתחות: statusCode, headers ו-body. אם הבקשה נכשלה (למשל, כתובת URL לא חוקית, אין נתיב למארח, כשל במשא ומתן על SSL וכו'), ההבטחה תידחה עם: {reason:
'failed'}. אם האפשרות timeout הוגדרה והבקשה נכשלה בגלל זמן קצוב לתפוגה, ה-promise יידחה עם: {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 |
מחרוזת | כתובת ה-URL שנכללת בבקשה. |
options
|
object | אפשרויות בקשה אופציונליות. (ראו אפשרויות בהמשך). |
אפשרויות
| אפשרות | סוג | תיאור |
|---|---|---|
headers |
מחרוזת | כותרות בקשה נוספות. |
timeout
|
number | הזמן הקצוב לתפוגה, באלפיות השנייה, לפני שהבקשה מבוטלת. ברירת המחדל היא 15000. |
authorization
|
object | אובייקט הרשאה אופציונלי מהקריאה ל-getGoogleAuth, כדי לכלול כותרות הרשאה כששולחים בקשות אל googleapis.com. |
הרשאות משויכות
sendHttpRequest
שליחת בקשת HTTP לכתובת ה-URL שצוינה, והחזרת הבטחה שמתקיימת עם התגובה כשהבקשה מסתיימת או כשהזמן הקצוב לתפוגה חולף.
התוצאה שמתקבלת היא אובייקט שמכיל שלושה מפתחות: statusCode, headers ו-body. אם הבקשה נכשלה (למשל, כתובת URL לא חוקית, אין נתיב למארח, כשל במשא ומתן על SSL וכו'), ההבטחה תידחה עם: {reason:
'failed'}. אם האפשרות timeout הוגדרה והבקשה נכשלה בגלל זמן קצוב לתפוגה, ה-promise יידחה עם: {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 |
מחרוזת | כתובת ה-URL שנכללת בבקשה. |
options
|
object | אפשרויות בקשה אופציונליות. (ראו אפשרויות בהמשך). |
body |
מחרוזת | גוף בקשה אופציונלי. |
אפשרויות
| אפשרות | סוג | תיאור |
|---|---|---|
headers |
מחרוזת | כותרות בקשה נוספות. |
method |
object | שיטת הבקשה. ברירת המחדל היא GET. |
timeout
|
number | הזמן הקצוב לתפוגה, באלפיות השנייה, לפני שהבקשה מבוטלת. ברירת המחדל היא 15000. |
authorization
|
object | אובייקט הרשאה אופציונלי מהקריאה ל-getGoogleAuth, כדי לכלול כותרות הרשאה כששולחים בקשות אל googleapis.com. |
הרשאות משויכות
sendPixelFromBrowser
שליחת פקודה לדפדפן לטעון את כתובת ה-URL שצוינה כתג <img>. פרוטוקול הפקודות הזה נתמך בתג Google Tag ל-Google Analytics ובתגי האינטרנט Google Analytics: GA Event. צריך להגדיר את כתובת ה-URL של מאגר התגים בצד השרת. פרטים נוספים זמינים בהוראות.
ה-API הזה מחזיר false אם הבקשה הנכנסת לא תומכת בפרוטוקול הפקודה, או אם התגובה כבר נמחקה. אחרת, ה-API הזה מחזיר את הערך true.
דוגמה:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
תחביר
sendPixelFromBrowser(url)
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
url |
מחרוזת | כתובת ה-URL שתישלח לדפדפן. |
הרשאות משויכות
setCookie
הגדרה או מחיקה של קובץ Cookie עם האפשרויות שצוינו.
כדי למחוק קובץ Cookie, צריך להגדיר קובץ Cookie עם אותו נתיב ודומיין שבהם קובץ ה-Cookie נוצר, ולהקצות לו ערך תפוגה שכבר עבר, למשל "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 |
מחרוזת | שם קובץ ה-Cookie. השם לא תלוי-רישיות. |
value |
מחרוזת | הערך של קובץ ה-Cookie. |
options |
object | מאפייני קובצי Cookie אופציונליים:domain, expires, fallbackDomain, httpOnly, max-age, path, secure ו-sameSite. (ראו אפשרויות בהמשך). |
noEncode |
boolean |
אם המאפיין מוגדר בתור true, הערך של קובץ ה-Cookie לא יקודד. ברירת המחדל היא
false.
|
domain: המארח שקובץ ה-Cookie יישלח אליו. אם ממלאים בשדה את הערך המיוחד auto, המארח נקבע באופן אוטומטי לפי האסטרטגיה הבאה:
- eTLD+1 של הכותרת
Forwarded, אם היא קיימת. - eTLD+1 של הכותרת
X-Forwarded-Host, אם היא קיימת. - eTLD+1 של הכותרת
Host.
- eTLD+1 של הכותרת
expires: משך החיים המקסימלי של קובץ ה-cookie. הערך הזה צריך להיות מחרוזת תאריך בפורמט UTC, למשל "Sat, 26 Oct 1985 08:21:00 GMT". אם גם
expiresוגםmax-ageמוגדרים,max-ageמקבל עדיפות.httpOnly: אם הערך הוא
true, אסור ל-JavaScript לגשת לקובץ ה-Cookie.max-age: מספר השניות עד שתוקף קובץ ה-Cookie יפוג. אם תזינו אפס או מספר שלילי, תוקף קובץ ה-Cookie יפוג באופן מיידי. אם גם
expiresוגםmax-ageמוגדרות, המדיניותmax-ageמקבלת עדיפות.path: נתיב שחייב להיות קיים בכתובת ה-URL המבוקשת, אחרת הדפדפן לא ישלח את הכותרת Cookie.
secure: אם הערך מוגדר כ-
true, קובץ ה-Cookie נשלח לשרת רק כשנשלחת בקשה מנקודת קצה (endpoint) מסוגhttps:.sameSite: קובע שאסור לשלוח קובץ Cookie עם בקשות ממקורות שונים. הערך חייב להיות
'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 |
מחרוזת | הערך שיוגדר כגוף התגובה. |
encoding |
מחרוזת |
קידוד התווים של גוף התגובה (ברירת המחדל היא 'utf8'). הערכים הנתמכים כוללים את 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary' ו-'hex'.
|
הרשאות משויכות
נדרשת ההרשאה access_response. ההרשאה צריכה להיות מוגדרת כך שתאפשר גישה לפחות אל:
body
setResponseHeader
מגדירה כותרת בתגובה שתחזור. אם כותרת עם השם הזה (לא תלוי-רישיות) הוגדרה בעבר על ידי ה-API הזה, הקריאה האחרונה תחליף או תנקה את הערך שהוגדר על ידי הקריאה הקודמת.
שימו לב שצריך לקרוא ל-returnResponse כדי שהתגובה תישלח בחזרה ללקוח.
תחביר
setResponseHeader(name, value);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
name |
מחרוזת | שם הכותרת. שמות של כותרות HTTP הם לא תלויי-רישיות, ולכן שם הכותרת יופיע באותיות קטנות. |
value |
string undefined | ערך הכותרת. אם הערך הוא null או לא מוגדר, הכותרת בעלת השם תימחק מהתגובה שתתקבל. |
הרשאות משויכות
נדרשת ההרשאה access_response. ההרשאה צריכה להיות מוגדרת כך שתאפשר גישה לפחות אל:
headers
setResponseStatus
מגדירה את קוד הסטטוס של HTTP של התגובה שתתקבל.
שימו לב שצריך לקרוא ל-returnResponse כדי שהתגובה תישלח בחזרה ללקוח.
תחביר
setResponseStatus(statusCode);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
statusCode |
number | קוד הסטטוס של HTTP שיוחזר. |
הרשאות משויכות
נדרשת ההרשאה access_response. ההרשאה צריכה להיות מוגדרת כך שתאפשר גישה לפחות אל:
status
sha256
מחשב את תקציר SHA-256 של הקלט ומפעיל קריאה חוזרת (callback) עם התקציר המקודד ב-base64, אלא אם האובייקט options מציין קידוד פלט אחר.
החתימה וההתנהגות של ה-API הזה תואמות ל-API sha256 למאגרי תגים באינטרנט. עם זאת, בתבניות בהתאמה אישית במאגרי תגים בצד השרת צריך להשתמש ב-API 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 |
מחרוזת | המחרוזת שרוצים לגבב. |
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 |
מחרוזת | המחרוזת שרוצים לגבב. |
options |
object |
אובייקט אפשרויות אופציונלי כדי לציין את קידוד הפלט. אם
צוין, האובייקט צריך להכיל את המפתח outputEncoding
עם הערך base64 או hex.
|
הרשאות משויכות
ללא.
templateDataStorage
מחזירה אובייקט עם שיטות לגישה למאגר הנתונים של התבנית. מאגר נתונים של תבניות מאפשר לשתף נתונים בין הרצות של תבנית אחת. הנתונים שמאוחסנים במאגר הנתונים של התבנית נשמרים בשרת שבו פועל מאגר התגים. ברוב המקרים יש כמה שרתים שמפעילים את מאגר התגים, ולכן אחסון נתונים במאגר הנתונים של התבנית לא מבטיח שלכל בקשה עוקבת תהיה גישה לנתונים.
ה "נתונים" בשם "templateDataStorage" מתייחסים לעובדה שרק סוגי נתונים פשוטים, שאינם פונקציות, יכולים להיות מאוחסנים באמצעות ה-API הזה. כל הפונקציות או ההפניות לפונקציות שמועברות ל-API יאוחסנו במקום זאת בתור 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
בודק מחרוזת מול ביטוי רגולרי שנוצר באמצעות ה-API של createRegex. הפונקציה מחזירה את הערך true אם הביטוי הרגולרי תואם. אחרת, הפונקציה מחזירה את הערך false.
ביטוי רגולרי שנוצר עם הדגל הגלובלי הוא בעל מצב (stateful). פרטים נוספים זמינים במסמכי התיעוד של 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 |
מחרוזת | מחרוזת לבדיקה. |
הרשאות משויכות
ללא.
toBase64
מקודד מחרוזת כ-base64 או כ-base64url. ברירת המחדל היא קידוד Base64.
תחביר
toBase64(input, options);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
input |
מחרוזת | המחרוזת שרוצים לקודד. |
options
|
object | הגדרת API אופציונלית. (ראו אפשרויות בהמשך). |
אפשרויות
| אפשרות | סוג | תיאור | גירסת מינימום |
|---|---|---|---|
urlEncoding
|
boolean | אם הערך הוא true, התוצאה תהיה מקודדת בפורמט base64url. |
1.0.0 |
דוגמה
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
הרשאות משויכות
ללא.
BigQuery
הפונקציה מחזירה אובייקט שמספק פונקציות של BigQuery.
הפונקציה BigQuery.insert מאפשרת לכתוב נתונים בטבלה ב-BigQuery. היא מחזירה promise שמותאם אם ההוספה מצליחה, או נדחה אם יש שגיאה.
כשההוספה מצליחה, ה-promise נפתר ללא ארגומנטים.
אם ההוספה נכשלת, ה-promise נדחה עם רשימה של אובייקטים שמכילים את סיבת השגיאה, ואולי גם אובייקט שורה אם מתרחשת שגיאה. יכול להיות שחלק מהבקשה יושלם בהצלחה וחלקים אחרים לא. במקרה כזה, ה-promise נדחה ומוצגת רשימה של שגיאות לכל שורה עם אובייקט שורה, כדי לעזור להבחין אילו שורות נוספו (ראו דוגמאות לשגיאות בהמשך). למידע נוסף, אפשר לעיין במאמרי העזרה של 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.
ה-API הזה תומך רק ב-Firestore במצב Native, ולא ב-Firestore במצב Datastore. בנוסף, ה-API תומך רק בשימוש במסד הנתונים שמוגדר כברירת מחדל.
Firestore.read
הפונקציה Firestore.read קוראת נתונים ממסמך Firestore ומחזירה promise שמתייחס לאובייקט שמכיל שני מפתחות: id ו-data. אם המסמך לא קיים, ה-promise נדחה עם אובייקט שמכיל מפתח reason ששווה ל-not_found.
תחביר
Firestore.read(path[, options]);
| פרמטר | סוג | תיאור |
|---|---|---|
path |
מחרוזת | הנתיב למסמך או לאוסף. השם לא יכול להתחיל או להסתיים בלוכסן ('/'). |
options |
object | אפשרויות בקשה אופציונליות. האפשרויות הנתמכות הן: projectId, disableCache ו-transaction. המערכת מתעלמת ממפתחות של אפשרויות לא ידועות. (ראו אפשרויות בהמשך). |
| פרמטר | סוג | תיאור |
|---|---|---|
projectId |
מחרוזת | אופציונלי. מזהה הפרויקט ב-Google Cloud Platform. אם משמיטים את הערך, המערכת מאחזרת את projectId ממשתנה הסביבה GOOGLE_CLOUD_PROJECT, כל עוד הגדרת ההרשאה access_firestore של מזהה הפרויקט היא * או GOOGLE_CLOUD_PROJECT. אם מאגר התגים בצד השרת פועל ב-Google Cloud, המשתנה GOOGLE_CLOUD_PROJECT כבר יוגדר למזהה הפרויקט בענן של Google Cloud. |
disableCache |
boolean | אופציונלי. קובעת אם להשבית את המטמון. כברירת מחדל, השמירה במטמון מופעלת, והתוצאות נשמרות במטמון למשך הבקשה. |
transaction |
מחרוזת | אופציונלי. הערך שאוחזר מ-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. אם הנתיב הוא לאוסף, ייווצר מסמך עם מזהה שנוצר באופן אקראי. אם הנתיב הוא למסמך והוא לא קיים, הוא ייווצר. ה-API הזה מחזיר הבטחה (promise) שמתקיימת למזהה של המסמך שנוסף או שונה. אם משתמשים באפשרות של טרנזקציה, ה-API עדיין מחזיר הבטחה, אבל היא לא תכיל את המזהה כי פעולות הכתיבה מתבצעות באצווה.
תחביר
Firestore.write(path, input[, options]);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
path |
מחרוזת | הנתיב למסמך או לאוסף. השם לא יכול להתחיל או להסתיים בלוכסן ('/'). |
input |
object | הערך שייכתב במסמך. אם אפשרות המיזוג מוגדרת, ה-API ימזג את המפתחות מהקלט לתוך המסמך. |
options |
object | אפשרויות בקשה אופציונליות. האפשרויות הנתמכות הן: projectId, merge ו-transaction. המערכת מתעלמת ממפתחות של אפשרויות לא ידועות. (ראו אפשרויות בהמשך). |
| פרמטר | סוג | תיאור |
|---|---|---|
projectId |
מחרוזת | אופציונלי. מזהה הפרויקט ב-Google Cloud Platform. אם משמיטים את הערך, המערכת מאחזרת את projectId ממשתנה הסביבה GOOGLE_CLOUD_PROJECT, כל עוד הגדרת ההרשאה access_firestore של מזהה הפרויקט היא * או GOOGLE_CLOUD_PROJECT. אם מאגר התגים בצד השרת פועל ב-Google Cloud, המשתנה GOOGLE_CLOUD_PROJECT כבר יוגדר למזהה הפרויקט בענן של Google Cloud. |
merge |
boolean | אופציונלי. אם הערך הוא true, המפתחות מהקלט ימוזגו לתוך המסמך. אחרת, השיטה תחליף את כל המסמך. ברירת המחדל היא
false. |
transaction |
מחרוזת | אופציונלי. הערך שאוחזר מ-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 שולחת שאילתה לאוסף הנתון ומחזירה הבטחה (promise) שמתקבלת כמערך של מסמכי Firestore שתואמים לתנאי השאילתה. אובייקט המסמך של Firestore זהה לזה שמופיע למעלה בקטע Firestore.read. אם אין מסמכים שתואמים לתנאי השאילתה, ה-promise שיוחזר יתקבל כמערך ריק.
תחביר
Firestore.query(collection, queryConditions[, options]);
| פרמטר | סוג | תיאור |
|---|---|---|
collection |
מחרוזת | הנתיב לאוסף. השם לא יכול להתחיל או להסתיים בלוכסן ('/'). |
queryConditions |
מערך | מערך של תנאי שאילתה. כל שאילתה מופיעה בצורה של מערך עם שלושה ערכים: key, operator ו-expectedValue. E.g.:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. התנאים משולבים באמצעות AND כדי ליצור את תוצאת השאילתה. ב אופרטורים של שאילתות ב-Firestore מפורטים כל האופרטורים התואמים של שאילתות. |
options |
object | אפשרויות בקשה אופציונליות. האפשרויות הנתמכות הן: projectId, disableCache, limit ו-transaction. המערכת מתעלמת ממפתחות של אפשרויות לא ידועות. (ראו אפשרויות בהמשך). |
| פרמטר | סוג | תיאור |
|---|---|---|
projectId |
מחרוזת | אופציונלי. מזהה הפרויקט ב-Google Cloud Platform. אם משמיטים את הערך, המערכת מאחזרת את projectId ממשתנה הסביבה GOOGLE_CLOUD_PROJECT, כל עוד הגדרת ההרשאה access_firestore של מזהה הפרויקט היא * או GOOGLE_CLOUD_PROJECT. אם מאגר התגים בצד השרת פועל ב-Google Cloud, המשתנה GOOGLE_CLOUD_PROJECT כבר יוגדר למזהה הפרויקט בענן של Google Cloud. |
disableCache |
boolean | אופציונלי. קובעת אם להשבית את המטמון. כברירת מחדל, השמירה במטמון מופעלת, והתוצאות נשמרות במטמון למשך הבקשה. |
limit |
number | אופציונלי. משנה את המספר המקסימלי של תוצאות שמוחזרות על ידי השאילתה. ערך ברירת המחדל הוא 5. |
transaction |
מחרוזת | אופציונלי. הערך שאוחזר מ-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 באופן אטומי. אם מתרחשת כתיבה בו-זמנית או התנגשות אחרת בטרנזקציה, המערכת תנסה לבצע את הטרנזקציה עד פעמיים. אם הניסיון נכשל אחרי שלושה ניסיונות בסך הכול, ה-API ידחה את הבקשה ותופיע שגיאה. ה-API הזה מחזיר אובייקט promise שמותאם למערך של מזהי מסמכים, לכל פעולת כתיבה, אם הטרנזקציה מצליחה, ונדחה עם השגיאה אם היא נכשלת.
תחביר
Firestore.runTransaction(callback[, options]);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
callback |
function | קריאה חוזרת (callback) שמופעלת עם מזהה עסקה מסוג מחרוזת. אפשר להעביר את מזהה העסקה לקריאות ל-API של קריאה/כתיבה/שאילתה. פונקציית הקריאה החוזרת הזו חייבת להחזיר אובייקט promise. הקריאה החוזרת יכולה לפעול עד שלוש פעמים לפני שהיא נכשלת. |
options |
object | אפשרויות בקשה אופציונליות. האפשרות היחידה שנתמכת היא projectId. המערכת מתעלמת ממפתחות של אפשרויות לא ידועות. (ראו אפשרויות בהמשך). |
| פרמטר | סוג | תיאור |
|---|---|---|
projectId |
מחרוזת | אופציונלי. מזהה הפרויקט ב-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.
}
});
הסיבות לשגיאה יכולות לכלול, בין היתר, קודי שגיאה של Firestore API בארכיטקטורת REST.
הרשאות משויכות
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
ממשקי ה-API הבאים פועלים יחד כדי לאפשר העברת הודעות בין חלקים שונים של מאגר תגים.
addMessageListener
מוסיפה פונקציה שמאזינה להודעה מסוג מסוים. כשנשלחת הודעה מהסוג הזה באמצעות ה-API של sendMessage (בדרך כלל על ידי תג), פונקציית ה-callback תופעל באופן סינכרוני. הקריאה החוזרת מופעלת עם שני פרמטרים:
messageType:stringmessage:Object
אם הקריאה החוזרת נוספת בלקוח, היא תקבל הודעות בכל האירועים שהלקוח יוצר. אם הקריאה החוזרת (callback) צריכה לקבל הודעות רק מאירוע מסוים, צריך לקשר את ה-API הזה לאירוע באמצעות bindToEvent בפונקציה onStart של ה-API של runContainer. ראו בדוגמה.
תחביר
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
messageType |
מחרוזת | סוג ההודעה שצריך להאזין לה. אם הערך הוא לא מחרוזת, הוא יומר למחרוזת. |
callback |
function | הקריאה החוזרת (callback) שצריך להפעיל כשנשלחת הודעה מסוג ההודעה הרלוונטי. אם הקריאה החוזרת היא לא פונקציה, ה-API לא יעשה שום דבר. |
דוגמה
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
הפונקציה מחזירה את הערך true אם נוסף מאזין להודעות לסוג ההודעה הנתון. אחרת, הפונקציה מחזירה את הערך False.
תחביר
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
הרשאות משויכות
ללא.
sendMessage
שליחת הודעה מהסוג שצוין למאזין רשום. אפשר להשתמש בזה כדי לשלוח הודעות מתג בחזרה ללקוח שהפעיל את מאגר התגים.
תחביר
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
messageType |
מחרוזת | סוג ההודעה שתישלח. אם הערך הוא לא מחרוזת, הוא יומר למחרוזת. |
message |
object | ההודעה שרוצים לשלוח. אם ההודעה היא לא אובייקט, ה-API לא יעשה שום דבר. |
הרשאות משויכות
נדרשת ההרשאה use_message. ההרשאה חייבת להיות מוגדרת כך שתאפשר לפחות:
- סוג הודעה עם
Usageשלlisten_and_sendאוsend.
Object
מחזירה אובייקט שמספק שיטות של Object.
ה-method keys() מספק את ההתנהגות של Object.keys() בספרייה הרגילה. היא מחזירה מערך של שמות המאפיינים הניתנים לספירה של אובייקט נתון, באותו סדר שבו לולאת for...in... הייתה מחזירה אותם. אם ערך הקלט הוא לא אובייקט, הוא יומר לאובייקט.
השיטה values() מספקת את ההתנהגות של Object.values() בספרייה הרגילה. היא מחזירה מערך של ערכי המאפיינים הניתנים לספירה של אובייקט נתון, באותו סדר שבו לולאת for...in... הייתה מחזירה אותם. אם ערך הקלט הוא לא אובייקט, הוא יומר לאובייקט.
ה-method entries() מספק את ההתנהגות של Object.entries() בספרייה הרגילה. היא מחזירה מערך של זוגות [key, value] של מאפיינים שניתנים לספירה של אובייקט נתון, באותו סדר שבו לולאת for...in... הייתה מחזירה אותם. אם ערך הקלט הוא לא אובייקט, הוא יומר לאובייקט.
ה-method freeze() מספק את ההתנהגות של Object.freeze() בספרייה הרגילה. אי אפשר לשנות אובייקט שהוקפא. הקפאת אובייקט מונעת הוספה של מאפיינים חדשים, הסרה של מאפיינים קיימים ושינוי של ערכים במאפיינים קיימים. הפונקציה freeze() מחזירה את אותו אובייקט שהועבר. ארגומנט פרימיטיבי או null יטופל כאילו היה אובייקט קפוא, ויוחזר.
ה-method 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 | מחרוזת | המפתח ברמה העליונה שרוצים למחוק. |
דוגמה
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
מחזירה אובייקט שמספק שיטות לאינטראקציה עם הבטחות.
הבטחות (promises) שוות מבחינה פונקציונלית להבטחות של JavaScript. לכל מופע יש שלוש שיטות שמחזירות Promise, שמאפשר פעולה נוספת כשה-Promise מסתיים:
.then()– מטפל גם בבקשות שנפתרו וגם בבקשות שנדחו. הוא מקבל שני קריאות חוזרות (callbacks) כפרמטרים: אחת למקרה של הצלחה ואחת למקרה של כישלון.-
.catch()– מטפל רק בבקשות שנדחו. מקבלת קריאה חוזרת אחת כפרמטר. -
.finally()– מאפשר להריץ קוד גם אם אובייקט ה-promise הותאם וגם אם הוא נדחה. מקבלת קריאה חוזרת (callback) אחת כפרמטר שמופעל ללא ארגומנט.
משתנה שמחזיר הבטחה שווה לערך שההבטחה מחזירה, או לערך 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) ש:
- הוא מסתיים כשכל הקלטים מסתיימים, או
- דחייה כשכל אחד מהקלטים נדחה
תחביר
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
יוצר הבטחה (promise) ששווה מבחינה פונקציונלית להבטחה של 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()
});
הרשאות משויכות
ללא.
ממשקי API לבדיקה
ממשקי ה-API האלה פועלים עם בדיקות JavaScript בארגז חול כדי ליצור בדיקות לתבניות בהתאמה אישית ב-Google Tag Manager. ממשקי ה-API האלה לבדיקה לא צריכים הצהרת require(). [מידע נוסף על בדיקות של תבניות בהתאמה אישית]
assertApi
מחזירה אובייקט התאמה שאפשר להשתמש בו כדי להצהיר הצהרות על ה-API הנתון.
תחביר
assertApi(apiName)
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
apiName |
מחרוזת | שם ה-API שרוצים לבדוק. אותה מחרוזת שמועברת אל
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
ה-API של assertThat מבוסס על הספרייה [Truth] של Google. היא מחזירה אובייקט שאפשר להשתמש בו כדי להצהיר בצורה שוטפת על הערך של נושא. אם טענת נכוֹנוּת (assertion) נכשלת, הבדיקה נעצרת מיד ומסומנת כבדיקה שנכשלה. עם זאת, כשל בבדיקה אחת לא ישפיע על מקרי בדיקה אחרים.
תחביר
assertThat(actual, opt_message)
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
actual |
any | הערך שבו צריך להשתמש בבדיקות השוטפות. |
opt_message |
מחרוזת | הודעה אופציונלית להדפסה אם ההצהרה נכשלת. |
Matchers
| התאמה | תיאור |
|---|---|
isUndefined() |
הצהרה שהנושא הוא undefined. |
isDefined() |
הצהרה שהנושא הוא לא undefined. |
isNull() |
הצהרה שהנושא הוא null. |
isNotNull() |
הצהרה שהנושא הוא לא null. |
isFalse() |
הצהרה שהנושא הוא false. |
isTrue() |
הצהרה שהנושא הוא true. |
isFalsy() |
מצהיר שהנושא הוא falsy. ערכים מסוג Falsy הם
undefined, null, false,
NaN, 0, ו-'' (מחרוזת ריקה). |
isTruthy() |
קובע שהנושא הוא truthy. ערכים מסוג Falsy הם
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 |
מחרוזת | טקסט אופציונלי של הודעת שגיאה. |
דוגמה
fail('This test has failed.');
mock
API של mock מאפשר לשנות את ההתנהגות של ממשקי API בארגז חול. אפשר להשתמש ב-API המדומה בקוד של התבנית, אבל הוא פועל רק במצב בדיקה.
הדמיות מתאפסות לפני כל הרצה של בדיקה.
תחביר
mock(apiName, returnValue);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
apiName |
מחרוזת | שם ה-API שרוצים לדמות, אותה מחרוזת שמועברת אל require() |
returnValue |
any | הערך שיוחזר ל-API או לפונקציה שנקראה במקום ה-API. אם returnValue היא פונקציה, הפונקציה הזו נקראת במקום ה-API בארגז החול. אם returnValue היא לא פונקציה, הערך הזה מוחזר במקום ה-API בארגז החול. |
דוגמאות
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
באמצעות ה-API של mockObject אפשר לשנות את ההתנהגות של ממשקי API בארגז חול שמחזירים אובייקט. אפשר להשתמש ב-API בקוד של התבנית, אבל הוא פועל רק במצב בדיקה. הדמיות מתאפסות לפני כל הרצה של בדיקה.
תחביר
mockObject(apiName, objectMock);
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
apiName |
מחרוזת | שם ה-API שרוצים לדמות, אותה מחרוזת שמועברת אל require() |
objectMock |
object | הערך שיוחזר ל-API או לפונקציה שנקראה במקום ה-API. חייב להיות אובייקט. |
דוגמאות
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
מריצה את הקוד של התבנית, כלומר את התוכן של הכרטיסייה Code, בסביבת הבדיקה הנוכחית עם אובייקט נתונים נתון של קלט.
תחביר
runCode(data)
פרמטרים
| פרמטר | סוג | תיאור |
|---|---|---|
data |
object | אובייקט הנתונים שבו משתמשים בבדיקה. |
ערך מוחזר
הפונקציה מחזירה את הערך של משתנה לתבניות ליצירת משתנים, ומחזירה את הערך undefined לכל שאר סוגי התבניות.
דוגמה
runCode({field1: 123, field2: 'value'});