היסודות של סקריפט של Apps עם Google Sheets #2: גיליונות אלקטרוניים, גיליונות וטווחים

1. מבוא

אנחנו שמחים שהצטרפת לחלק השני של Apps Scripts עם פלייליסט Google Codecode. מעבדת הקוד הקודמת התמקדה בקונספטים של עורך הסקריפטים, פקודות מאקרו ופונקציות מותאמות אישית. Codelab הזה מתעמק בשירות הגיליון האלקטרוני שאפשר להשתמש בו כדי לקרוא, לכתוב ולשנות נתונים ב-Google Sheets.

מה תלמדו

  • כיצד גיליונות אלקטרוניים, גיליונות וטווחים מיוצגים ב-Apps Script.
  • איך ניגשים לגיליון האלקטרוני הפעיל (הפתוח) בעזרת השם SpreadsheetApp והכיתה Spreadsheet, ומשנים את השם שלו.
  • איך משנים שם של גיליון וכיוון של עמודה/שורה בטווח של Sheet?
  • איך לציין, להפעיל, להעביר ולמיין קבוצת תאים או טווח נתונים באמצעות המחלקה Range.

לפני שמתחילים

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

מה תצטרך להכין

  • הבנה בנושאים הבסיסיים של Apps Script שנבדקו בשיעור הקוד הקודם של הפלייליסט הזה.
  • היכרות בסיסית עם עורך Apps Script
  • היכרות בסיסית עם Google Sheets
  • יכולת לקרוא את Sheets A1 ב-Sheets
  • היכרות בסיסית עם JavaScript והString כיתה שלה

בקטע הבא מפורטות מחלקות הליבה של שירות הגיליונות האלקטרוניים.

2. מבוא לשירות הגיליונות האלקטרוניים

יש ארבע כיתות שכוללת את הבסיס של שירות הגיליון האלקטרוני: SpreadsheetApp , Spreadsheet , Sheet ו-Range. בקטע הזה מתוארים הכיתות האלה ובאילו מטרות הן משמשות.

הכיתה ב-SheetsApp

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

גיליונות אלקטרוניים, גיליונות אלקטרוניים והכיתות שלהם

מונח ב-Sheets הוא גיליון אלקטרוני והוא קובץ של Google Sheets (המאוחסן ב-Google Drive) שמכיל נתונים המאורגנים לפי שורות ועמודות. גיליון אלקטרוני נקרא לפעמים 'Google Sheets'' באופן דומה למסמך שמכונה 'Google Docs'.

אפשר להשתמש בכיתה Spreadsheet כדי לגשת לנתוני קבצים ב-Google Sheets ולשנות אותם. אפשר להשתמש בכיתה הזו גם לפעולות אחרות ברמת הקובץ, כמו הוספת שותפי עריכה.

f00cc1a9eb606f77.png

גיליון** מייצג את הדף הספציפי של גיליון אלקטרוני, שנקרא לפעמים "tab." כל גיליון אלקטרוני יכול להכיל גיליון אחד או יותר. אפשר להשתמש בכיתה Sheet** כדי לגשת לנתונים ולהגדרות ברמת הגיליון ולשנות אותם, למשל כדי להעביר שורות או עמודות נתונים.

39dbb10f83e3082.png

לסיכום, הסיווג Spreadsheet פועל באוסף הגיליונות ומגדיר קובץ Google Sheets ב-Google Drive. הכיתה Sheet פועלת בגיליונות בודדים בתוך גיליון אלקטרוני.

הכיתה 'טווח'

רוב פעולות מניפולציה של נתונים (לדוגמה, קריאה, כתיבה או עיצוב של נתוני תאים) מחייבות להגדיר את התאים שעליהם תתבצע הפעולה. אפשר להשתמש ברמה Range כדי לבחור קבוצות ספציפיות של תאים בגיליון. מופעים של הכיתה הזו מייצגים טווח — קבוצה של תאים סמוכים או יותר בגיליון. ניתן לציין טווחים לפי מספר השורה והעמודה שלהם או על ידי שימוש בפורמט A1.

שאר קוד Lab מציג דוגמאות לסקריפטים שעובדים עם הכיתות האלה והשיטות שלהם.

3. הגדרה

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

5376f721894b10d9.png

עותק של הגיליון האלקטרוני לדוגמה לשימושך נמצא בתיקייה Google Drive בשם "עותק של גיליון אלקטרוני ללא שם." אפשר להשתמש בגיליון האלקטרוני הזה כדי להשלים את תרגילי הקוד הזה.

תזכורת: כדי לפתוח את עורך הסקריפטים מ-Google Sheets, לוחצים על תוספים > Apps Script.

כשפותחים פרויקט Apps Script בעורך הסקריפטים בפעם הראשונה, עורך הסקריפט יוצר עבורכם פרויקט סקריפט וגם קובץ סקריפט.

בקטע הבא נסביר איך להשתמש בכיתה Spreadsheet כדי לשפר את הגיליון האלקטרוני.

4. גישה אל גיליונות אלקטרוניים ושינוי שלהם

בקטע הזה נסביר איך להשתמש בכיתות SpreadsheetApp ו-Spreadsheet כדי לגשת לגיליונות אלקטרוניים ולשנות אותם. ספציפית, התרגילים מלמדים איך לשנות את השם של גיליון אלקטרוני ולשכפל גיליונות בתוך גיליון אלקטרוני.

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

שינוי השם של הגיליון האלקטרוני הפעיל

נניח שרצית לשנות את השם המוגדר כברירת מחדל, "עותק של גיליון אלקטרוני ללא שם " לכותרת שמשקפת טוב יותר את המטרה של הגיליון האלקטרוני. אפשר לעשות זאת עם הכיתות SpreadsheetApp ו-Spreadsheet.

  1. בעורך הסקריפטים, צריך להחליף את קטע הקוד של myFunction() המוגדר כברירת מחדל בקוד הבא:
function renameSpreadsheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
  1. כדי לשמור את הסקריפט, לוחצים על 'שמירה' שמירה.
  2. כדי לשנות את השם של פרויקט Apps Script, לוחצים על פרויקט ללא שם, מזינים את ה&מחירים של Avocado; בתור שם הפרויקט החדש ולוחצים על שינוי שם.
  3. כדי להפעיל את הסקריפט, בוחרים באפשרות renameSpreadsheet מתוך רשימת הפונקציות ולוחצים על הפעלה.
  4. מאשרים את רכיב המאקרו לפי ההוראות במסך. אם מופיעה ההודעה &"האפליקציה הזו לא&&39;לא מאומתת&quot, לוחצים על מתקדם ואז על מעבר למחירים של אבוקדו (לא בטוח). במסך הבא יש ללחוץ על אישור.

לאחר הפעלת הפונקציה, שם הקובץ של הגיליון האלקטרוני אמור להשתנות:

226c7bc3c2fbf33e.png

נבחן את הקוד שהזנת. השיטה getActiveSpreadsheet() מחזירה אובייקט שמייצג את הגיליון האלקטרוני הפעיל. כלומר, העותק של הגיליון האלקטרוני של האימון שיצרתם. אובייקט הגיליון האלקטרוני הזה מאוחסן במשתנה mySS. קריאה ל-rename(newName) ב-mySS משנה את השם של קובץ הגיליון האלקטרוני ב-Google Drive ל-"2017 מחירי Avocado בפורטלנד, סיאטל."

מכיוון שהמשתנה mySS הוא גיליון אלקטרוני, אפשר להפוך את הקוד שלך לנקי ויעיל יותר. לשם כך, יש להתקשר למספר Spreadsheet ב-mySS במקום להתקשר ל-getActiveSpreadsheet() שוב ושוב.

שכפול הגיליון הפעיל

בגיליון האלקטרוני הנוכחי, יש רק גיליון אחד בגיליון. אפשר להתקשר לשיטה Spreadsheet.duplicateActiveSheet() כדי ליצור עותק של הגיליון:

  1. יש להוסיף את הפונקציה החדשה הבאה מתחת לפונקציה renameSpreadsheet() שכבר נמצאת בפרויקט הסקריפט שלך:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();
}
  1. שומרים את פרויקט הסקריפט.
  2. כדי להפעיל את הסקריפט, בוחרים באפשרות duplicateAndOrganizeActiveSheet מתוך רשימת הפונקציות ולוחצים על הפעלה.

חוזרים אל Sheets כדי לצפות ב&מירכאות חדשים. עותק של גיליון Sheets נוסף לגיליון האלקטרוני.

d24f9f4ae20bf7d4.gif

בפונקציה החדשה הזו, השיטה duplicateActiveSheet() יוצרת, מפעילה ומחזירה את הגיליון האלקטרוני בגיליון האלקטרוני. הגיליון שנוצר מאוחסן ב-duplicateSheet, אך הקוד עדיין לא עושה דבר עם המשתנה הזה.

בקטע הבא, צריך להשתמש בכיתה Sheet כדי לשנות את השם של הגיליון הכפול ולעצב אותו.

5. עיצוב הגיליון באמצעות סיווג גיליון

הכיתה Sheet מספקת שיטות שמאפשרות לסקריפטים לקרוא ולעדכן גיליונות. בקטע הזה אפשר ללמוד איך לשנות את הרוחב והשם של גיליון ושל שיטות בגיליון Sheet.

שינוי השם של הגיליון

שינוי השם של גיליונות הוא שינוי השם של גיליון אלקטרוני כך: renameSpreadsheet(). צריך להפעיל רק קריאה אחת בשיטה.

  1. ב-Google Sheets, לוחצים על הגיליון Sheet_Original כדי להפעיל אותו.
  2. ב-Apps Script צריך לשנות את הפונקציה duplicateAndOrganizeActiveSheet() כך שתתאים לערך הבא:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
  1. שומרים את הפונקציה ומפעילים אותה.

ב-Google Sheets נוצר גיליון כפול עם שם חדש בזמן הפעלת הפונקציה:

91295f42354f62e7.gif

בקוד שנוסף, השיטה setName(name) משנה את השם של duplicateSheet, באמצעות getSheetID() כדי לקבל את מספר המזהה הייחודי של הגיליון. האופרטור + מקשר את מזהה הגיליון לסוף המחרוזת של "Sheet_".

שינוי עמודות ושורות בגיליון

אפשר גם להשתמש בכיתה Sheet כדי לעצב את הגיליון. לדוגמה, אנחנו יכולים לעדכן את הפונקציה duplicateAndOrganizeActiveSheet() גם כדי לשנות את הגודל של עמודות בגיליון הכפול ולהוסיף שורות שהוקפאו:

  1. ב-Google Sheets, לוחצים על הגיליון Sheet_Original כדי להפעיל אותו.
  2. ב-Apps Script צריך לשנות את הפונקציה duplicateAndOrganizeActiveSheet() כך שתתאים לערך הבא:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);
}
  1. שומרים את הפונקציה ומפעילים אותה.

ב-Google Sheets נוצר עותק של גיליון אלקטרוני, משנים את השם, מפעילים אותו ומציגים אותו בפורמט הבא:

2e57c917ab157dad.gif

הקוד שהוספתם משתמש ב-autoResizeColumns(startColumn, numColumns) כדי לשנות את הגודל של עמודות הגיליון כדי שיהיה קל יותר לקרוא אותו. השיטה setFrozenRows(rows) קופאת את מספר השורות הנתון (שתיים במקרה זה), כדי ששורות הכותרת יהיו גלויות בזמן שהקורא גולל למטה בגיליון האלקטרוני.

בקטע הבא תלמדו על טווחים ומניפולציה בסיסית של נתונים.

6. סידור מחדש של הנתונים באמצעות הכיתה 'טווח'

הכיתה Range והשיטות שלה מספקות את רוב אפשרויות השינוי והעיצוב בשירות הגיליונות האלקטרוניים.

סעיף זה מציג מניפולציה בסיסית של נתונים עם טווחים. תרגילים אלה מתמקדים באופן השימוש בטווחים ב-Apps Script, ואילו מעבדות קוד אחרות בפלייליסט הזה מספקות מידע מעמיק יותר על מניפולציה של נתונים ועל עיצוב הנתונים.

העברת טווחים

ניתן להפעיל ולהעביר טווחים של נתונים באמצעות שיטות הכיתה וסימון A1, קיצור של זיהוי קבוצות ספציפיות של תאים בגיליונות אלקטרוניים. אם אתם צריכים להכיר מחדש את תיאור ה-A1, תוכלו להיעזר בו.

יש לעדכן את השיטה של duplicateAndOrganizeActiveSheet() כדי להעביר גם נתונים מסוימים:

  1. ב-Google Sheets, לוחצים על הגיליון Sheet_Original כדי להפעיל אותו.
  2. ב-Apps Script צריך לשנות את הפונקציה duplicateAndOrganizeActiveSheet() כך שתתאים לערך הבא:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));
}
  1. שומרים את הפונקציה ומפעילים אותה.

כשמריצים את הפונקציה הזו, המערכת יוצרת גיליון אלקטרוני, מפעילה גיליון אלקטרוני ומפעילה אותו. בנוסף, התוכן של עמודה F מועבר לעמודה C:

10ea483aec52457e.gif

הקוד החדש משתמש בשיטה getRange(a1Notation) כדי לזהות את טווח הנתונים להעברה. כשמזינים את הסימן A1 &מירכאות;F2:F&quot, כפרמטר השיטה', מציינים את עמודה F (לא כולל F1). אם הטווח שצוין קיים, השיטה getRange(a1Notation) מחזירה את המופע של Range. הקוד מאחסן את המופע במשתנה myRange כדי שיהיה לך קל להשתמש בו.

לאחר זיהוי הטווח, השיטה moveTo(target) מקבלת את התוכן של myRange (גם הערכים וגם הפורמט) ומזיזה אותם. היעד (עמודה ג') מצוין באמצעות סימון A1 "C2" מדובר בתא יחיד, ולא בעמודה. כשמעבירים נתונים, אין צורך להתאים את הגדלים לטווחי היעד וליעד. Apps Script פשוט מיישר את התא הראשון של כל אחד מהם.

מיון טווחים

הסיווג Range מאפשר לקרוא, לעדכן ולארגן קבוצות של תאים. לדוגמה, אפשר למיין טווח נתונים באמצעות השיטה Range.sort(sortSpecObj):

  1. ב-Google Sheets, לוחצים על הגיליון Sheet_Original כדי להפעיל אותו.
  2. ב-Apps Script צריך לשנות את הפונקציה duplicateAndOrganizeActiveSheet() כך שתתאים לערך הבא:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));

  // Sort all the data using column C (Price information).
  myRange = duplicateSheet.getRange("A3:D55");
  myRange.sort(3);
}
  1. שומרים את הפונקציה ומפעילים אותה.

עכשיו, בנוסף לפורמט הקודם, הפונקציה ממיינת את כל הנתונים בטבלה באמצעות פרטי המחיר בעמודה C:

a6cc9710245fae8d.png

הקוד החדש משתמש בפרמטר getRange(a1Notation) כדי לציין טווח חדש, המכסה את A3:D55 (כל הטבלה מלבד כותרות העמודות). הקוד מתקשר לשיטה sort(sortSpecObj) כדי למיין את הטבלה. כאן, הפרמטר sortSpecObj הוא מספר העמודה למיון. השיטה ממיינת את הטווח כך שערכי העמודות שצוינו יהיו מהנמוך ביותר לגבוה ביותר (ערכים במגמת עלייה). לשיטה sort(sortSpecObj) יש דרישות מורכבות מורכבות יותר, אבל אין צורך בהן כאן. במסמכי העזר בנושא שיטות אפשר לראות את כל הדרכים השונות שבהן תוכלו להתקשר לטווחי מיון.

מזל טוב, השלמת בהצלחה את כל התרגילים ב-Codelab. הקטע הבא סוקר את הנקודות העיקריות של קוד Lab זה ומציג תצוגה מקדימה של קוד Lab הבא בפלייליסט הזה.

7. סיכום

ואז סיימת את שיעור ה-Lab הזה. עכשיו אתם יכולים להשתמש בכיתות ובתנאים הבסיסיים של שירות הגיליונות האלקטרוניים ב-Apps Script.

מעכשיו אפשר לעבור למעבדת הקוד הבאה.

האם שיעור ה-Lab הזה הועיל לך?

כן לא

מה כללנו?

  • כיצד גיליונות אלקטרוניים, גיליונות וטווחים מיוצגים ב-Apps Script.
  • שימושים בסיסיים בכיתות SpreadsheetApp , Spreadsheet , Sheet ו-Range.

המאמרים הבאים

שיעור ה-Lab הבא בפלייליסט הזה מספקת מידע מעמיק יותר לגבי קריאה, כתיבה ושינוי של נתונים בגיליון אלקטרוני.

רוצים למצוא את שיעור ה-Lab הבא שלכם? תמצאו אותו במאמר עבודה עם נתונים.