1. מבוא
Data Studio מאפשר לכם ליצור בחינם מרכזי בקרה אינטראקטיביים בזמן אמת עם תרשימים וטבלאות יפים של הנתונים. אפשר לאחזר נתונים ממגוון מקורות וליצור מספר בלתי מוגבל של דוחות ב-Data Studio, עם אפשרויות עריכה ושיתוף מלאות. צילום המסך הבא הוא דוגמה ללוח בקרה ב-Data Studio:

( כאן אפשר לראות דוגמה לדוח ב-Data Studio)
פלאגינים של הקהילה לחיבור למקורות נתונים הם תכונה של Data Studio שמאפשרת לכם להשתמש ב-Apps Script כדי ליצור מחברים לכל מקור נתונים שאפשר לגשת אליו באינטרנט. פלאגינים של הקהילה לחיבור למקורות נתונים נוצרים על ידי קהילת Data Studio. כלומר, כל אחד יכול ליצור פלאגינים כאלה. אתם יכולים גם לשתף פלאגינים של הקהילה לחיבור למקורות נתונים עם אנשים אחרים, כדי שהם יוכלו לגשת לנתונים שלהם מתוך Data Studio.
אפשר להשתמש בחיבורים לקהילה בתרחישי שימוש שונים:
- אתם מציגים נתונים מפלטפורמה מסחרית (למשל, מדיה חברתית, שיווק, ניתוח נתונים וכו')
- אתם יוצרים ויזואליזציה של נתונים ארגוניים מקומיים (למשל נתוני מכירות ממסד נתונים מקומי של MySQL)
- אתם מספקים ללקוחות דרך להציג את הנתונים שלהם מהשירות שלכם
- אתם יוצרים פלטפורמת דיווח בלחיצת כפתור
- אתם יוצרים ויזואליזציה של הנתונים שלכם ממקור אינטרנט (למשל, יצירת לוח בקרה של Google Fit)
מה תלמדו
- איך פועל מחבר קהילתי של Data Studio
- איך משתמשים ב-Google Apps Script כדי ליצור פלאגין חיבור למקור נתונים
- איך משתמשים במחברים של הקהילה ב-Data Studio
הדרישות
- גישה לאינטרנט ולדפדפן אינטרנט
- חשבון Google
- היכרות עם JavaScript בסיסי ועם ממשקי Web API
2. סקר מהיר
למה בחרתם ב-Codelab הזה?
איך מתכננים להשתמש ב-codelab או במדריך הזה?
מה רמת ההיכרות שלך עם Data Studio?
מהו התיאור הטוב ביותר של הרקע שלך?
אפשר לעבור לדף הבא כדי לשלוח את פרטי הסקר.
3. סקירה כללית של פלאגינים לחיבור למקורות נתונים
פלאגינים של קהילת Data Studio לחיבור למקורות נתונים מאפשרים חיבורים ישירים מ-Data Studio לכל מקור נתונים שאפשר לגשת אליו באינטרנט. אתם יכולים להתחבר לפלטפורמות מסחריות, למערכי נתונים ציבוריים או לנתונים פרטיים משלכם שנמצאים בשרתים מקומיים. מחברי קהילה יכולים לאחזר נתונים באמצעות ממשקי API באינטרנט, ממשקי JDBC API, קבצים שטוחים (CSV, JSON, XML) ושירותי Apps Script.

נניח שפרסמתם חבילה ב-npm ואתם רוצים לעקוב אחרי מספר ההורדות של החבילה לאורך זמן לפי יום. בשיעור Codelab הזה נסביר איך ליצור מחבר לקהילה שמאחזר נתונים באמצעות npm package download counts API. לאחר מכן אפשר להשתמש בפלאגין החיבור למקור נתונים ב-Data Studio כדי ליצור לוח בקרה להצגה חזותית של מספר ההורדות.
4. תהליך העבודה של פלאגין חיבור למקור נתונים
במחבר קהילה בסיסי, מגדירים ארבע פונקציות:
getAuthType()getConfig()getSchema()getData()
בהתאם לשלב הנוכחי בתהליך העבודה, Data Studio מפעיל את פונקציות המחבר האלה ומשתמש בתגובה בשלבים הבאים. בסרטון שלמטה יש סקירה כללית של:
- איך פועל מחבר קהילה
- שלבים שונים בתהליך העבודה
- כשקוראים לפונקציות שונות
- מקרים שבהם מוצגים ממשקי משתמש שונים ב-Data Studio
- פעולות משתמש צפויות בשלבים שונים
אחרי שצופים בסרטון, אפשר להמשיך את ה-codelab.
אין צורך לזכור את תהליך העבודה הזה, רק כדאי לעיין בו כדי להבין מה קורה במחבר. תמיד אפשר לחזור לתרשים הזה.

בשלב הבא, תתחילו ליצור את המחבר ב-Google Apps Script. תצטרכו לעבור הלוך ושוב בין ממשק המשתמש של Apps Script לבין ה-codelab הזה.
5. הגדרת פרויקט Apps Script
שלב 1: נכנסים אל Google Apps Script.
שלב 2: יוצרים פרויקט חדש של Apps Script על ידי לחיצה על + פרויקט חדש בפינה הימנית העליונה.

יוצג פרויקט של מעטפת עם פונקציה ריקה myFunction בקובץ Code.gs.

שלב 3: מוחקים את הפונקציה myFunction.
שלב 4: נותנים לפרויקט שם:
- לוחצים על
Untitled projectבפינה הימנית העליונה של הדף. - מזינים את שם הפרויקט.

מתחילים לכתוב את קוד המחבר בקובץ Code.gs.
6. הגדרה של getAuthType()
Data Studio יקרא לפונקציה getAuthType() כשהוא יצטרך לדעת את שיטת האימות שבה משתמש המחבר. הפונקציה הזו צריכה להחזיר את שיטת האימות שהמחבר דורש כדי לאשר את שירות הצד השלישי.
במקרה של מחבר ההורדה של npm שאתם יוצרים, לא צריך לבצע אימות לשום שירות של צד שלישי, כי ה-API שבו אתם משתמשים לא דורש אימות. מעתיקים את הקוד הבא ומוסיפים אותו לקובץ Code.gs:
Code.gs
var cc = DataStudioApp.createCommunityConnector();
function getAuthType() {
var AuthTypes = cc.AuthType;
return cc
.newAuthTypeResponse()
.setAuthType(AuthTypes.NONE)
.build();
}
כאן מציינים שהמחבר לא דורש אימות של צד שלישי (AuthTypes.NONE). כדי לראות את כל שיטות האימות הנתמכות, אפשר לעיין בהפניה ל-AuthType().
7. הגדרה של getConfig()
כדי להתחיל להשתמש במחבר, המשתמשים יצטרכו להגדיר אותו. תגובת הפונקציה getConfig() מגדירה את אפשרויות ההגדרה שיוצגו למשתמשים. Data Studio קורא לפונקציה getConfig() כדי לקבל את פרטי ההגדרה של המחבר. על סמך התשובה שמתקבלת מ-getConfig(), מערכת Data Studio תציג את מסך ההגדרות של המחבר ותשנה את ההתנהגות של המחבר.
במסך ההגדרה, אפשר לספק מידע או לקבל קלט מהמשתמש באמצעות רכיבי הטופס הבאים:
| רכיב קלט | תיבת טקסט של שורה אחת. |
| רכיב קלט | תיבת טקסט עם כמה שורות. |
| רכיב קלט | תפריט נפתח עם אפשרויות לבחירה יחידה. |
| רכיב קלט | תפריט נפתח עם אפשרויות לבחירה מרובה. |
| רכיב קלט | תיבת סימון אחת שאפשר להשתמש בה כדי לתעד ערכים בוליאניים. |
| רכיב לרשת המדיה | תיבת טקסט סטטית שמשמשת להצגת הוראות או מידע למשתמש. |
משתמשים ברכיב INFO כדי לספק הוראות למשתמש, וברכיב TEXTINPUT כדי לקבל מהמשתמש את שם חבילת הקלט. בתגובה getConfig(), תקבץ את רכיבי הטופס האלה תחת המפתח configParams.
ממשק ה-API שאליו אתם מתחברים דורש תאריך כפרמטר, לכן צריך להגדיר את dateRangeRequired ל-true בתגובה getConfig(). כך מערכת Data Studio תספק טווחי תאריכים עם כל בקשות הנתונים. אם מקור הנתונים לא דורש תאריך כפרמטר, אפשר להשמיט את ההגדרה הזו.
מוסיפים את קוד getConfig() הבא לקובץ Code.gs, מתחת לקוד הקיים של getAuthType():
Code.gs
function getConfig(request) {
var config = cc.getConfig();
config.newInfo()
.setId('instructions')
.setText('Enter npm package names to fetch their download count.');
config.newTextInput()
.setId('package')
.setName('Enter a single package name')
.setHelpText('e.g. googleapis or lighthouse')
.setPlaceholder('googleapis');
config.setDateRangeRequired(true);
return config.build();
}
בהתבסס על configParams האלה, כשמשתמשים בפלאגין החיבור ב-Data Studio, אמור להופיע מסך הגדרה כמו זה שמוצג בהמשך. אבל נרחיב על כך בהמשך.

בואו נעבור לפונקציה הבאה – getSchema().
8. הגדרת getSchema()
Data Studio קורא לפונקציה getSchema() כדי לקבל את הסכימה שמשויכת להגדרה שנבחרה על ידי המשתמש עבור המחבר. בהתאם לתשובה שמתקבלת מ-getSchema(), המשתמש יראה ב-Data Studio את מסך השדות עם רשימה של כל השדות במחבר.
לכל תצורה ספציפית של המחבר, הסכימה היא רשימה של כל השדות שהמחבר יכול לספק לגביהם נתונים. יכול להיות שמחבר יחזיר סכימה שונה עם שדות שונים בהתאם להגדרות שונות. הסכימה יכולה להכיל שדות שמאוחזרים ממקור ה-API, שדות שמחושבים ב-Apps Script ושדות שמחושבים ב-Data Studio באמצעות נוסחה של שדה מחושב. המחבר מספק את המטא-נתונים לגבי כל שדה בסכימה, כולל:
- שם השדה
- סוג הנתונים של השדה
- מידע סמנטי
אפשר לעיין במקורות המידע הבאים: getSchema() ו-Field.
בהתאם לאופן שבו המחבר מאחזר את הסכימה, יכול להיות שהיא קבועה או מחושבת באופן דינמי כשקוראים ל-getSchema(). פרמטרים של הגדרה מ-getConfig() שהוגדרו על ידי המשתמש יסופקו בארגומנט request של הפונקציה getSchema().
ב-codelab הזה לא צריך לגשת לארגומנט request. תקבלו מידע נוסף על הארגומנט request כשכותבים קוד לפונקציה getData() בקטע הבא.
הסכימה של המחבר קבועה ומכילה את 3 השדות הבאים:
| השם של חבילת npm שהמשתמש מספק |
| הורדת מספר החבילה של npm |
| התאריך של ספירת ההורדות |
בהמשך מופיע קוד getSchema() של מחבר הנתונים. פונקציית העזר getFields() יוצרת הפשטה של יצירת השדות, כי הפונקציונליות הזו נדרשת גם על ידי getSchema() וגם על ידי getData(). מוסיפים את הקוד הבא לקובץ Code.gs:
Code.gs
function getFields(request) {
var cc = DataStudioApp.createCommunityConnector();
var fields = cc.getFields();
var types = cc.FieldType;
var aggregations = cc.AggregationType;
fields.newDimension()
.setId('packageName')
.setType(types.TEXT);
fields.newMetric()
.setId('downloads')
.setType(types.NUMBER)
.setAggregation(aggregations.SUM);
fields.newDimension()
.setId('day')
.setType(types.YEAR_MONTH_DAY);
return fields;
}
function getSchema(request) {
var fields = getFields(request).build();
return { schema: fields };
}
בהתבסס על הסכימה הזו, אתם יכולים לצפות לראות את השדות הבאים במסך השדות של Data Studio כשמשתמשים בפלאגין החיבור ב-Data Studio. אבל נרחיב על כך בהמשך, כשנבדוק את המחבר.

נעבור עכשיו לפונקציה האחרונה שלנו – getData().
9. הגדרה של getData(): חלק 1
Data Studio קורא לפונקציה getData() בכל פעם שהוא צריך לאחזר נתונים. על סמך התגובה שמתקבלת מ-getData(), Data Studio יעבד ויעדכן את התרשימים בלוח הבקרה. יכול להיות ש-getData() יופעל במהלך האירועים הבאים:
- משתמש מוסיף תרשים ללוח הבקרה
- משתמש עורך תרשים
- המשתמש צופה במרכז הבקרה
- משתמש עורך מסנן או אמצעי בקרה לנתונים שמשויך
- Data Studio צריך דגימת נתונים
אין צורך להעתיק קוד מהדף הזה, כי תעתיקו את הקוד המלא
getData()
קוד בשלב מאוחר יותר.
הסבר על אובייקט request
Data Studio מעביר את אובייקט request עם כל קריאה של getData(). בהמשך מוסבר על המבנה של אובייקט request. זה יעזור לכם לכתוב את הקוד לפונקציה getData().
מבנה האובייקט request
{
configParams: object,
scriptParams: object,
dateRange: {
startDate: string,
endDate: string
},
fields: [
{
name: Field.name
}
]
}
- האובייקט
configParamsיכיל ערכי הגדרה של הפרמטרים שמוגדרים ב-getConfig()ומוגדרים על ידי המשתמש. - האובייקט
scriptParamsיכיל מידע שרלוונטי להרצת המחבר. לא צריך להשתמש בזה ב-Codelab הזה. - השדה
dateRangeיכיל את טווח התאריכים המבוקש אם הוא נכלל בתשובתgetConfig(). -
fieldsיכיל את רשימת השמות של השדות שלגביהם מתבקשים נתונים.
בדוגמה הבאה אפשר לראות איך פלט של פונקציית getData() עבור מחבר יכול להיראות:request
{
configParams: {
package: 'jquery'
},
dateRange: {
startDate: '2017-07-16',
endDate: '2017-07-18'
},
fields: [
{
name: 'day',
},
{
name: 'downloads',
}
]
}
בgetData()הקריאה שמוצגת למעלה request, נשלחת בקשה רק לשני שדות, למרות שבסכימת המחבר יש שדות נוספים. בדף הבא מוצגת דוגמה לתגובה לgetData()הקריאה הזו ולמבנה התגובה הכללי של getData().
10. הגדרת getData(): חלק 2
getData()בתשובה, תצטרכו לספק גם סכימה וגם נתונים לשדות המבוקשים. תצטרכו לחלק את הקוד לשלושה פלחים:
- יוצרים סכימה לשדות המבוקשים.
- אחזור וניתוח של נתונים מ-API.
- התאמת נתונים מנותחים וסינון של השדות המבוקשים.
אין צורך להעתיק קוד מהדף הזה, כי תעתיקו את הקוד המלא
getData()
קוד בדף הבא.
זה המבנה של getData()בשביל המחבר שלכם.
function getData(request) {
// TODO: Create schema for requested fields.
// TODO: Fetch and parse data from API.
// TODO: Transform parsed data and filter for requested fields.
return {
schema: <filtered schema>,
rows: <transformed and filtered data>
};
}
יצירת סכימה לשדות המבוקשים
// Create schema for requested fields
var requestedFieldIds = request.fields.map(function(field) {
return field.name;
});
var requestedFields = getFields().forIds(requestedFieldIds);
אחזור וניתוח של נתונים מ-API
כתובת ה-URL של npm API תהיה בפורמט הבא:
https://api.npmjs.org/downloads/point/{start_date}:{end_date}/{package}
יוצרים את כתובת ה-URL של ה-API באמצעות הערכים request.dateRange.startDate, request.dateRange.endDate ו-request.configParams.package שסופקו על ידי Data Studio. לאחר מכן מאחזרים את הנתונים מה-API באמצעות UrlFetchApp(Apps Script Class: reference). לאחר מכן מנתחים את התשובה שהתקבלה.
// Fetch and parse data from API
var url = [
'https://api.npmjs.org/downloads/range/',
request.dateRange.startDate,
':',
request.dateRange.endDate,
'/',
request.configParams.package
];
var response = UrlFetchApp.fetch(url.join(''));
var parsedResponse = JSON.parse(response).downloads;
התאמת נתונים מנותחים וסינון לפי השדות המבוקשים
התשובה מ-npm API תהיה בפורמט הבא:
{
downloads: [
{
day: '2014-02-27',
downloads: 1904088
},
..
{
day: '2014-03-04',
downloads: 7904294
}
],
start: '2014-02-25',
end: '2014-03-04',
package: 'somepackage'
}
תשנה את התשובה מ-npm API ותספק את התשובה getData() בפורמט הבא. אם הפורמט לא ברור, אפשר לעיין בדוגמה לתגובה בפסקה הבאה.
{
schema: [
{
object(Field)
}
],
rows: [
{
values: [string]
}
]
}
בתשובה, צריך להחזיר את הסכימה רק לשדות המבוקשים באמצעות המאפיין schema. צריך להחזיר את הנתונים באמצעות המאפיין rows כרשימה של שורות. בכל שורה, רצף השדות ב-values צריך להיות זהה לרצף השדות ב-schema. בהתבסס על הדוגמה הקודמת שלנו של request, כך תיראה התשובה ל-getData():
{
schema: requestedFields.build(),
rows: [
{
values: [ 38949, '20170716']
},
{
values: [ 165314, '20170717']
},
{
values: [ 180124, '20170718']
},
]
}
כבר יצרתם את קבוצת המשנה של הסכימה. משתמשים בפונקציה הבאה כדי לשנות את הנתונים שנותחו ולסנן אותם כדי להציג רק את השדות המבוקשים.
function responseToRows(requestedFields, response, packageName) {
// Transform parsed data and filter for requested fields
return response.map(function(dailyDownload) {
var row = [];
requestedFields.asArray().forEach(function (field) {
switch (field.getId()) {
case 'day':
return row.push(dailyDownload.day.replace(/-/g, ''));
case 'downloads':
return row.push(dailyDownload.downloads);
case 'packageName':
return row.push(packageName);
default:
return row.push('');
}
});
return { values: row };
});
}
11. הגדרה של getData(): חלק 3
קוד getData() המשולב ייראה כמו הקוד שבהמשך. מוסיפים את הקוד הבא לקובץ Code.gs:
Code.gs
function responseToRows(requestedFields, response, packageName) {
// Transform parsed data and filter for requested fields
return response.map(function(dailyDownload) {
var row = [];
requestedFields.asArray().forEach(function (field) {
switch (field.getId()) {
case 'day':
return row.push(dailyDownload.day.replace(/-/g, ''));
case 'downloads':
return row.push(dailyDownload.downloads);
case 'packageName':
return row.push(packageName);
default:
return row.push('');
}
});
return { values: row };
});
}
function getData(request) {
var requestedFieldIds = request.fields.map(function(field) {
return field.name;
});
var requestedFields = getFields().forIds(requestedFieldIds);
// Fetch and parse data from API
var url = [
'https://api.npmjs.org/downloads/range/',
request.dateRange.startDate,
':',
request.dateRange.endDate,
'/',
request.configParams.package
];
var response = UrlFetchApp.fetch(url.join(''));
var parsedResponse = JSON.parse(response).downloads;
var rows = responseToRows(requestedFields, parsedResponse, request.configParams.package);
return {
schema: requestedFields.build(),
rows: rows
};
}
סיימתם לעבוד עם הקובץ Code.gs. לאחר מכן, מעדכנים את המניפסט.
12. עדכון המניפסט
בכלי לעריכת סקריפטים של Apps Script, בוחרים באפשרות Project Settings > Show "appsscript.json" manifest file in editor (הגדרות הפרויקט > הצגת קובץ המניפסט 'appsscript.json' בעורך).

פעולה זו תיצור קובץ מניפסט חדש appsscript.json.

מחליפים את קובץ appscript.json בטקסט הבא:
appsscript.json
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"dataStudio": {
"name": "npm Downloads - From Codelab",
"logoUrl": "https://raw.githubusercontent.com/npm/logos/master/npm%20logo/npm-logo-red.png",
"company": "Codelab user",
"companyUrl": "https://developers.google.com/looker-studio/",
"addonUrl": "https://github.com/googledatastudio/example-connectors/tree/master/npm-downloads",
"supportUrl": "https://github.com/googledatastudio/community-connectors/issues",
"description": "Get npm package download counts.",
"sources": ["npm"]
}
}
שומרים את פרויקט Apps Script.

מעולה! יצרתם את מחבר הקהילה הראשון שלכם והוא מוכן לבדיקה.
13. בדיקת המחבר ב-Data Studio
שימוש בפריסה
שלב 1: בסביבת הפיתוח של Apps Script, לוחצים על פריסה > בדיקת פריסות כדי לפתוח את תיבת הדו-שיח 'בדיקת פריסות'.

פריסת ברירת המחדל, Head Deployment, תופיע ברשימה.
שלב 2: לוחצים על העתקה כדי להעתיק את מזהה הפריסה של תג Head.
שלב 3: כדי לטעון את המחבר ב-Data Studio, מחליפים את ה-placeholder <HEAD_DEPLOYMENT_ID> בקישור הבא במזהה הפריסה של הגרסה האחרונה של המחבר, ולוחצים על הקישור בדפדפן:
https://lookerstudio.google.com/datasources/create?connectorId=<HEAD_DEPLOYMENT_ID>
אישור המחבר
משתמשים חדשים ב-Data Studio: אם זו הפעם הראשונה שאתם משתמשים ב-Data Studio, תתבקשו לאשר את השימוש ב-Data Studio ולהסכים לתנאים ולהגבלות. עליכם להשלים את תהליך האישור. כשמשתמשים ב-Data Studio בפעם הראשונה, יכול להיות שיוצג לכם גם תיבת דו-שיח לעדכון העדפות השיווק. אם אתם רוצים לקבל באימייל מידע על התכונות והעדכונים האחרונים ועל מוצרים חדשים, אתם יכולים להירשם לקבלת הודעות על מוצרים חדשים.
אחרי הטעינה, תוצג בקשה לאשר את המחבר.

לוחצים על Authorize (אישור) ומספקים את ההרשאה הנדרשת למחבר.
הגדרת המחבר
אחרי שתסיימו את תהליך ההרשאה, יוצג מסך ההגדרות. מקלידים lighthouse באזור הזנת הטקסט ולוחצים על Connect (חיבור) בפינה השמאלית העליונה.

אישור הסכימה
יוצג מסך השדות. לוחצים על יצירת דוח בפינה השמאלית העליונה.

יצירת מרכז השליטה שלך
תועברו לסביבת מרכז הבקרה של Data Studio. לוחצים על הוספה לדוח.

ב-Data Studio, בכל פעם שמשתמש ניגש למחבר ומוסיף הגדרה חדשה, נוצר מקור נתונים חדש בחשבון Data Studio של המשתמש. אפשר לחשוב על מקור נתונים כעל מופע של המחבר שמבוסס על הגדרה ספציפית. על סמך המחבר וההגדרה שהמשתמש בחר, מקור נתונים יחזיר טבלת נתונים עם קבוצה ספציפית של שדות. משתמשים יכולים ליצור כמה מקורות נתונים מאותו מחבר. אפשר להשתמש במקור נתונים בכמה דוחות, ואפשר להשתמש בכמה מקורות נתונים באותו דוח.
עכשיו מוסיפים תרשים של ציר זמן. בתפריט, לוחצים על הוספה > ציר זמן. ואז ממקמים את ציר הזמן באזור העריכה. אמור להופיע תרשים של ציר הזמן עם מספר ההורדות של חבילת npm שנבחרה. מוסיפים אמצעי בקרה של מסנן תאריכים ומציגים את לוח הבקרה כמו שמוצג למטה.

זהו! יצרתם את מחבר הקהילה הראשון שלכם! כאן מסתיים ה-Codelab הזה. עכשיו נבדוק מה השלבים הבאים שתוכלו לבצע.
14. השלבים הבאים
שיפור המחבר שיצרתם
לשפר את המחבר שיצרתם:
- ב-Data Studio, אם לא תציינו שם חבילה במסך ההגדרות של המחבר, תוצג הודעת שגיאה כשתציירו את תרשים סדרת הזמן. נסו להוסיף אימות קלט או אפשרות ברירת מחדל להגדרת המחבר.
- נסו להוסיף תמיכה בשאילתות של כמה שמות חבילות בו-זמנית בהגדרת המחבר. הערה: ה-API של ספירת ההורדות של חבילות npm תומך בהזנת כמה שמות חבילות שמופרדים בפסיקים.
- אפשר למצוא פתרונות לשתי הבעיות האלה בקוד של מחבר npm.
עוד פעולות שאפשר לבצע באמצעות מחברים לקהילה
- הפנייה ל-API של המחבר ולמניפסט
- כדי להבין מהן השיטות המומלצות, מומלץ לעיין בקוד של מחבר לדוגמה במאגר הקוד הפתוח שלנו.
- כדאי להשלים את ה-Codelab של clasp כדי שתוכלו לפתח מחברי קהילה בסביבה המקומית שלכם.
- אחרי שיוצרים מחבר קהילה מלא, כדאי לעיין באפשרויות הפרסום שזמינות.
- יצירת סוג ויזואליזציית נתונים במאגר הקהילה ב-Data Studio.
מקורות מידע נוספים
בהמשך מפורטים משאבים שונים שאפשר לגשת אליהם כדי להעמיק בחומר שמופיע ב-codelab הזה.
סוג משאב | תכונות משתמש | תכונות למפתחים | |
מסמכי תיעוד | |||
חדשות ועדכונים | נרשמים ב-Data Studio > הגדרות משתמש | ||
שאלות | |||
סרטונים | |||
דוגמאות | |||