Google Apps Script מאפשר לך ליצור ולשנות את Google Docs באופן פרוגרמטי, כמו גם להתאים אישית את ממשק המשתמש באמצעות תפריטים חדשים, תיבות דו-שיח סרגלי צד.
העקרונות הבסיסיים
Apps Script יכול לקיים אינטראקציה עם Google Docs בשתי דרכים: ליצור או לשנות מסמך אם למשתמש של הסקריפט יש את ההרשאות המתאימות את המסמך, וסקריפט יכול להיות גם מאוגדות למסמך, לסקריפט יכולות מיוחדות לשנות את ממשק המשתמש או להגיב כאשר המסמך פתוח. כדי ליצור סקריפט שמאוגד בקונטיינר מתוך Google Docs, לוחצים על תוספים > Apps Script.
בכל מקרה, קל ליצור אינטראקציה עם מסמך Google Docs באמצעות Document Service, כדוגמה הבאה מדגים.
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()
.
לסקריפטים שנוצרו בתוך מסמך (שקשור למאגר), משתמשים
DocumentApp.getActiveDocument()
ו-Document.getActiveTab()
.
מבנה המסמך
מנקודת המבט של Apps Script, מובנה מסמך Google Docs
בדומה למסמך HTML - כלומר, מסמך מורכב ממסמך אחד או יותר
Tab
אובייקטים, שכל אחד מהם מכיל
(כמו Paragraph
Table
) שמכילים בדרך כלל
רכיבים. רוב הסקריפטים המשנים מסמך של Google Docs מתחילים בקריאה ל-
getTab()
ו-
asDocumentTab()
ולאחר מכן getBody()
,
כי Body
הוא אלמנט הליבה
שמכיל את כל שאר הרכיבים בכרטיסייה, מלבד
HeaderSection
,
FooterSection
, וכן
Footnotes
.
עם זאת, יש כללים שקובעים אילו סוגים של רכיבים יכולים להכיל סוגים אחרים. בנוסף, שירות המסמכים ב-Apps Script יכול להוסיף רק אלמנטים מסוימים לרכיבים אחרים. העץ למטה מראה יכולים להיכלל בסוג מסוים של רכיב.
ניתן להוסיף רכיבים שמוצגים בגופן מודגש. אלמנטים לא מודגשים יכולים להיות בוצעה בו מניפולציה.
- מסמך
- כרטיסייה
- DocumentTab
- גוף
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר דף וכו')
- פסקה
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר דף וכו')
- טבלה
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר דף וכו')
- פסקה
- HorizontalRule
- InlineDrawing
- InlineImage
- טקסט
- UnsupportedElement (מספר דף וכו')
- טבלה
- ListItem
- FootnoteSection
- DocumentTab
- כרטיסייה
החלפת טקסט
לרוב, נעשה שימוש ב-Apps Script כדי להחליף טקסט ב-Google Docs. נניח שיש לנו גיליון אלקטרוני מלא במידע על לקוחות ואתם רוצים ליצור Google Docs לכל לקוח. (פעולה זו נקראת לעיתים קרובות 'דואר' merge.)
יש הרבה דרכים להחליף טקסט, אבל הדרך הפשוטה ביותר היא
ה-method replaceText()
מוצגת בדוגמה הבאה. רוב התמיכה של replaceText
נתמכת
של תכונות הביטוי הרגולרי של JavaScript. הפונקציה הראשונה שלמטה
מוסיף כמה שורות של placeholder של טקסט למסמך Google Docs; בעולם האמיתי,
תהיה סבירות גבוהה יותר שתקלידו את ה-placeholders במסמך בעצמכם.
הפונקציה השנייה מחליפה את ה-placeholders במאפיינים שמוגדרים
אובייקט client
.
שימו לב ששתי הפונקציות האלה משתמשות
getActiveDocument()
וגם
getActiveTab()
שיטות, שחלות רק על סקריפטים שנוצרו בתוך מסמך Google Docs;
בתסריט נפרד, משתמשים
DocumentApp.create()
,
openById()
,
או openByUrl()
,
בשילוב עם Document.getTab()
,
במקום זאת.
הוספת כמה placeholders
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
החלפת ה-placeholders
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 Service. אם אתם מתכננים לפרסם את הממשק המותאם אישית שלכם כחלק , style guide כדי לשמור על עקביות של עורך Google Docs.
תוספים ל-Google Docs
תוספים פועלים ב-Google Docs ואפשר להתקין אותם מחנות התוספים של Google Docs. אם פיתחתם סקריפט ל-Google Docs ורוצים לשתף אותו עם העולם, Apps Script מאפשר לכם לפרסם את הסקריפט כדי שמשתמשים אחרים יוכלו להתקין אותו מחנות התוספים.
כדי ללמוד איך יוצרים תוסף ל-Google Docs, אפשר להיכנס לאתר מדריך למתחילים ליצירת תוספים ל-Docs.
טריגרים
סקריפטים שמקושרים אל Google
המסמך יכול להשתמש בטריגר פשוט כדי להגיב
לאירוע של המסמך onOpen
, ש
מתרחשת בכל פעם שמשתמש שיש לו גישת עריכה למסמך פותח אותו ב-Google Docs.
כדי להגדיר את הטריגר, כותבים פונקציה בשם onOpen()
. לדוגמה
בטריגר הזה מוסבר על תפריטים מותאמים אישית ב-Google Workspace.
למרות שהטריגר הפשוט שימושי להוספת תפריטים, הוא לא יכול להשתמש באף אפליקציה
שירותי סקריפטים שנדרשים להם הרשאה.