Google Apps Script מאפשר לכם ליצור ולשנות מסמכי Google Docs באופן פרוגרמטי, וגם להתאים אישית את ממשק המשתמש באמצעות תפריטים חדשים, תיבות דו-שיח וסרגלי צד.
העקרונות הבסיסיים
יש שתי דרכים כלליות שבהן אפשר להשתמש ב-Apps Script כדי לבצע אינטראקציה עם Google Docs: כל סקריפט יכול ליצור או לשנות מסמך אם למשתמש שהסקריפט שייך לו יש את ההרשאות המתאימות למסמך, וגם סקריפט יכול להיות מקשר למסמך, מה שנותן לסקריפט יכולות מיוחדות לשנות את ממשק המשתמש או להגיב כשפותחים את המסמך. כדי ליצור סקריפט שקשור למסמך מתוך Google Docs, לוחצים על תוספים > Apps Script.
בכל מקרה, קל ליצור אינטראקציה עם מסמך Google Docs באמצעות Document Service של Apps Script, כפי שמוצג בדוגמה הבאה.
function createDoc() { var doc = DocumentApp.create('Sample Document'); var documentTab = doc.getTab('t.0').asDocumentTab(); var body = documentTab.getBody(); var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']]; body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1); table = body.appendTable(rowsData); table.getRow(0).editAsText().setBold(true); }
הסקריפט שלמעלה יוצר מסמך חדש ב-Google Drive של המשתמש, ואז מאחזר את הכרטיסייה עם המזהה t.0
(הכרטיסייה הראשונה כברירת מחדל), מוסיף פסקה שמכילה את אותו הטקסט כמו השם של המסמך, מעצב את הפסקה ככותרת ומצרף טבלה שמבוססת על הערכים במערך דו-ממדי. הסקריפט יכול לבצע את השינויים האלה בקלות גם במסמך קיים, על ידי החלפת הקריאה ל-DocumentApp.create()
ב-DocumentApp.openById()
או ב-openByUrl()
. בסקריפטים שנוצרו בתוך מסמך (container-bound), משתמשים בפקודות DocumentApp.getActiveDocument()
ו-Document.getActiveTab()
.
מבנה המסמך
מנקודת המבט של Apps Script, מסמך Google Docs בנוי בדומה למסמך HTML – כלומר, מסמך מורכב מאובייקט אחד או יותר מסוג Tab
, שכל אחד מהם מכיל רכיבים (כמו Paragraph
או Table
) שלרוב מכילים רכיבים אחרים. רוב הסקריפטים שמשנים מסמך ב-Google Docs מתחילים בקריאה ל-getTab()
ול-asDocumentTab()
, ואחריהם getBody()
, כי Body
הוא רכיב ליבה שמכיל את כל הרכיבים האחרים בכרטיסייה, חוץ מ-HeaderSection
, FooterSection
וכל Footnotes
.
עם זאת, יש כללים לגבי סוגי הרכיבים שיכולים להכיל סוגים אחרים. בנוסף, שירות המסמכים ב-Apps Script יכול להוסיף רק סוגים מסוימים של רכיבים לרכיבים אחרים. בתרשים העץ שלמטה אפשר לראות אילו רכיבים יכולים להיכלל בסוג מסוים של רכיב.
אפשר להוסיף את הרכיבים שמוצגים באותיות מודגשות, אבל אי אפשר להוסיף את הרכיבים שלא מוצגים באותיות מודגשות.
- מסמך
- מקש Tab
- DocumentTab
- Body
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר הדף וכו')
- פסקה
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר הדף וכו')
- טבלה
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר הדף וכו')
- פסקה
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר הדף וכו')
- טבלה
- ListItem
- FootnoteSection
- DocumentTab
- מקש Tab
החלפת טקסט
לרוב משתמשים ב-Apps Script כדי להחליף טקסט ב-Google Docs. נניח שיש לכם גיליון אלקטרוני מלא בפרטי לקוחות ואתם רוצים ליצור מסמך Google Docs מותאם אישית לכל לקוח. (סוג הפעולה הזה נקרא לעיתים קרובות מיזוג דואר).
יש הרבה דרכים להחליף טקסט, אבל הכי פשוטה היא השיטה replaceText()
שמוצגת בדוגמה שלמטה. replaceText
תומך ברוב התכונות של ביטויים רגולריים ב-JavaScript. הפונקציה הראשונה שבהמשך מוסיפה כמה שורות של טקסט placeholder ל-Google Docs. במציאות, סביר יותר שתקלידו את ה-placeholders במסמך בעצמכם. הפונקציה השנייה מחליפה את ערכי ה-placeholder במאפיינים שמוגדרים באובייקט client
.
שימו לב ששתי הפונקציות האלה משתמשות בשיטות getActiveDocument()
ו- getActiveTab()
, שרלוונטיות רק לסקריפטים שנוצרו בתוך מסמך Google Docs. בסקריפט עצמאי, צריך להשתמש בשיטות DocumentApp.create()
, openById()
, או openByUrl()
, בשילוב עם Document.getTab()
.
הוספת ערכי פלייסהולדר
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
החלפת הפלייסהולדרים
function searchAndReplace() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); var client = { name: 'Joe Script-Guru', address: '100 Script Rd', city: 'Scriptville', state: 'GA', zip: 94043 }; body.replaceText('{name}', client.name); body.replaceText('{address}', client.address); body.replaceText('{city}', client.city); body.replaceText('{state}', client.state); body.replaceText('{zip}', client.zip); }
תפריטים וממשקי משתמש בהתאמה אישית
אתם יכולים להתאים אישית את Google Docs על ידי הוספת תפריטים, תיבות דו-שיח וסרגלי צד. עם זאת, חשוב לזכור שסקריפט יכול לבצע אינטראקציה עם ממשק המשתמש רק עבור המופע הנוכחי של מסמך פתוח, ורק אם הסקריפט מקשר למסמך.
איך מוסיפים תפריטים מותאמים אישית ותיבות דו-שיח ל-Google Docs מידע נוסף על יצירת ממשקים מותאמים אישית לתיבת דו-שיח או לסרגל צד זמין במדריך לשירות HTML. אם אתם מתכננים לפרסם את הממשק המותאם אישית שלכם כחלק מתוסף, כדאי לעיין במדריך הסגנון כדי לוודא שהסגנון והפריסה של הממשק תואמים לאלה של עורך Google Docs.
תוספים ל-Google Docs
תוספים פועלים בתוך Google Docs ואפשר להתקין אותם מחנות התוספים של Google Docs. אם פיתחתם סקריפט ל-Google Docs ואתם רוצים לשתף אותו עם העולם, אתם יכולים לפרסם את הסקריפט כתוסף באמצעות Apps Script, כדי שמשתמשים אחרים יוכלו להתקין אותו מחנות התוספים.
כדי לראות איך יוצרים תוסף ל-Google Docs, אפשר לעיין במדריך למתחילים ליצירת תוספים ל-Docs.
טריגרים
סקריפטים מקשרים למסמך Google Docs יכולים להשתמש בטריגר פשוט כדי להגיב לonOpen
אירוע במסמך, שמתרחש בכל פעם שמשתמש עם הרשאת עריכה במסמך פותח אותו ב-Google Docs.
כדי להגדיר את הטריגר, פשוט כותבים פונקציה בשם onOpen()
. דוגמה לטריגר כזה מופיעה במאמר תפריטים בהתאמה אישית ב-Google Workspace. הטריגר הפשוט שימושי להוספת תפריטים, אבל אי אפשר להשתמש בו בשירותי Apps Script שדורשים הרשאה.