
נמאס לכם לסיים חישוב מורכב באקסל ואז להתחיל להעתיק נתונים ידנית ל-Outlook? אתם לא לבד. בעידן הדיגיטלי של 2025, אין סיבה לבזבז זמן על עבודה שחורה שמועדת לטעויות. היום נלמד איך לייעל את העבודה בעזרת Office Scripts וליצור כפתור בתוך האקסל ששולח מייל מעוצב אוטומטית, כולל צילום של טבלת הנתונים – הכל בלחיצה אחת.
למה אופיס סקריפט (Office Scripts) ולא VBA?
עבור משתמשי אקסל ותיקים, ה-VBA היה "מלך האוטומציה" במשך שנים. אבל כיום, כשהעבודה עברה לענן, Office Scripts לוקח את ההובלה:
-
עבודה בענן (Excel Online): בניגוד ל-VBA שעובד רק בגרסת השולחן, אופיס סקריפט עובד מכל דפדפן ומכל מקום.
-
אינטגרציה עם Power Automate: ניתן לחבר את הסקריפט לתהליכים רחבים (כמו עדכון אוטומטי ב-Teams או ב-CRM).
-
אבטחה: סקריפטים מנוהלים דרך החשבון הארגוני של Microsoft 365, מה שמונע את סיכוני האבטחה של קבצי המאקרו הישנים.
| מאפיין | Office Scripts | VBA (Macros) |
| תמיכה בענן (Web) | ✅ מלאה | ❌ אין |
| אבטחה | גבוהה (חשבון ארגוני) | נמוכה (נחסם לעיתים קרובות) |
| מכשירים ניידים | ✅ נתמך | ❌ לא נתמך |
הסוד לשליחה בעברית: כוחו של ה-HTML
כדי שהמייל ייראה מקצועי בעברית, אנחנו משתמשים בתגיות HTML קטנות אך קריטיות:
-
תגית
dir='rtl': מגדירה את כיוון הקריאה מימין לשמאל. ללא התגית הזו, סימני הפיסוק והספרות יתהפכו לכם בגוף המייל. -
text-align: right: מצמידה את כל הטקסט לימין, כפי שנהוג בשפה העברית.
המדריך המעשי: כך תעשו זאת בעצמכם
שלב 1: פתיחת העורך
היכנסו ללשונית Automate באקסל ולחצו על New Script.
שלב 2: הדבקת הקוד הדינמי
הקוד הבא הוא דינמי לחלוטין. הוא לא רק שולח מייל, אלא גם "שואל" את האקסל אילו תאים תרצו לצלם כתמונה לגוף המייל (לפי הערכים שתכתבו בתאים E1 ו-E2).
function main(workbook: ExcelScript.Workbook) {
let ws = workbook.getActiveWorksheet();
// 1. קריאת כתובות הטווח לצילום מהגיליון (למשל E1=B6, E2=C10)
let startCell = ws.getRange("E1").getText();
let endCell = ws.getRange("E2").getText();
// מנגנון הגנה: בדיקה אם התאים ריקים
if (!startCell || !endCell) {
console.log("שגיאה: חסרה כתובת טווח בתאים E1 או E2");
return;
}
try {
let dynamicRangeAddress = startCell + ":" + endCell;
let rangeToCapture = ws.getRange(dynamicRangeAddress);
// 2. קריאת נתוני המייל (שנו את הכתובות לפי הצורך)
let name = ws.getRange("C3").getText(); // שם הלקוח
let emailAddress = ws.getRange("C4").getText(); // כתובת המייל
let quoteNumber = ws.getRange("C12").getText(); // מספר הצעה או מחיר
// 3. יצירת התמונה מהטווח שנבחר
let img = rangeToCapture.getImage();
let imgHtml = '<img src="data:image/png;base64,' + img + '" style="width:450px; border:1px solid #ccc;"/><br/><br/>';
// 4. בניית גוף המייל (RTL לעברית תקנית)
let emailBody =
"<div dir='rtl' style='font-family: Arial, sans-serif; text-align: right;'>" +
"היי " + name + ",<br/><br/>" +
"מצרף בזאת את הצעת המחיר מספר: <strong>" + quoteNumber + "</strong><br/>" +
"אשר מבוססת על הסעיפים הבאים:<br/><br/>" +
imgHtml +
"במידה ויש שאלות נוספות, אני זמין עבורך.<br/><br/>" +
"בברכה,<br/>" +
"<strong>שלומי פוסטלניק</strong>" +
"</div>";
// 5. שליחת המייל
OfficeScript.sendMail({
to: emailAddress,
subject: "הצעת מחיר עבור " + name,
contentType: OfficeScript.EmailContentType.html,
content: emailBody
});
console.log("המייל נשלח בהצלחה ל-" + emailAddress);
} catch (error) {
console.log("שגיאה: וודא שכתובות התאים ב-E1 ו-E2 תקינות");
}
}
שלב 3: יצירת הכפתור
שמרו את הסקריפט, לחצו על שלוש הנקודות (…) בחלונית העורך ובחרו Add button. כעת עצבו את הכפתור בגיליון (צבע ירוק, טקסט "שלח הצעה") – וזהו! האוטומציה שלכם מוכנה.
מה עוד אפשר לעשות עם Office Scripts?
שליחת מייל היא רק קצה המזלג. הנה כמה רעיונות נוספים:
-
ניקוי נתונים אוטומטי: הסרת כפילויות וסידור פורמטים בלחיצת כפתור לפני הפקת דוחות.
-
פיצול גיליונות: יצירת קובץ נפרד לכל ספק מתוך טבלת נתונים מרכזית.
-
עדכון שער חליפין: משיכת נתונים חיצוניים (API) לעדכון מחירים בזמן אמת.
-
הצלבת נתונים: השוואת שני גיליונות ענקיים וסימון הבדלים בצבע באופן מיידי.
לסיכום
ה-VBA שירת אותנו נאמנה, אך אם אתם רוצים אוטומציה מודרנית, חסינת טעויות שעובדת בענן ובסנכרון מלא עם שאר הכלים של מיקרוסופט – הגיע הזמן לעבור ל-Office Scripts. זה מקצועי יותר, מהיר יותר, ופשוט עובד טוב יותר.
מה הלאה?
במאמר הבא ניקח את הקוד הנ"ל לרמה הבאה ונראה כיצד שולחים מיילים לרשימת תפוצה, הכול בלחיצת כפתור אחת!
בהצלחה באוטומציה הבאה שלכם! שלומי פוסטלניק




