הרחבת Google Docs

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 יכול להוסיף רק אלמנטים מסוימים לרכיבים אחרים. העץ למטה מראה יכולים להיכלל בסוג מסוים של רכיב.

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

החלפת טקסט

לרוב, נעשה שימוש ב-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. למרות שהטריגר הפשוט שימושי להוספת תפריטים, הוא לא יכול להשתמש באף אפליקציה שירותי סקריפטים שנדרשים להם הרשאה.