קבלת התראות על הנחות

רמת הקידוד: מתחילים
משך הזמן: 5 דקות
סוג הפרויקט: אוטומציה עם טריגר מבוסס-זמן

מטרות

  • להבין מה הפתרון עושה.
  • הסבר על הפעולות של שירותי Apps Script בפתרון.
  • מגדירים את הסקריפט.
  • מריצים את הסקריפט.

מידע על הפתרון הזה

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

צילום מסך של גיליון אלקטרוני ב-Google Sheets עם מחירי מניות והתראה באימייל מ-Gmail.

איך זה עובד

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

שירותי Apps Script

הפתרון הזה משתמש בשירותים הבאים:

  • Spreadsheet service – לולאה שחוזרת על כל מניה ברשימה ומשווה את מחיר המניה למחיר הרכישה.
  • Gmail service – יוצר ושולח אימייל עם רשימת המניות שמחירן ירד מתחת למחיר הקנייה.

דרישות מוקדמות

כדי להשתמש בדוגמה הזו, אתם צריכים לעמוד בדרישות המוקדמות הבאות:

  • חשבון Google (יכול להיות שחשבונות Google Workspace ידרשו אישור אדמין).
  • דפדפן אינטרנט עם גישה לאינטרנט.

הגדרת הסקריפט

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

הפעלת הסקריפט

  1. בגיליון האלקטרוני שהעתקתם, לוחצים על תוספים > Apps Script.
  2. בתפריט הנפתח של הפונקציה, בוחרים באפשרות checkLosses.
  3. לוחצים על Run.
  4. כשמוצגת בקשה, מאשרים את הסקריפט. אם במסך ההסכמה ל-OAuth מוצגת האזהרה האפליקציה הזו לא אומתה, ממשיכים בתהליך על ידי בחירה באפשרות מתקדם > מעבר אל {שם הפרויקט} (לא בטוח).

  5. בדקו את האימייל ששלחנו לכם כדי לראות רשימה של מניות שהמחיר שלהן ירד מתחת למחיר הרכישה. אם לא קיבלתם אימייל, בדקו אם מחירי המניות ברשימה שלכם נמוכים ממחיר הרכישה שלהן.

יצירת טריגר מבוסס-זמן

  1. חוזרים לפרויקט של Script.
  2. בצד ימין, לוחצים על מפעילים .
  3. בפינה השמאלית התחתונה, לוחצים על הוספת טריגר.
  4. בקטע Choose which function to run (בחירת הפונקציה להפעלה), מוודאים שהאפשרות checkLosses (בדיקת הפסדים) מסומנת.
  5. בקטע בחירת מקור האירוע, בוחרים באפשרות מבוסס-זמן.
  6. מגדירים את התדירות שבה רוצים שהסקריפט יפעל ולוחצים על שמירה.

בדיקת הקוד

כדי לבדוק את קוד Apps Script של הפתרון הזה, לוחצים על הצגת קוד המקור למטה:

הצגת קוד המקור

Code.gs

solutions/automations/tax-loss-harvest-alerts/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/automations/tax-loss-harvest-alerts

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/** 
* Checks for losses in the sheet.
*/
function checkLosses() {
  // Pulls data from the spreadsheet
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(
    "Calculations"
  );
  let source = sheet.getRange("A:G");
  let data = source.getValues();

  //Prepares the email alert content
  let message = "Stocks: <br><br>";

  let send_message = false;

  console.log("starting loop");

  //Loops through the cells in the spreadsheet to find cells where the stock fell below purchase price
  let n = 0;
  for (let i in data) {
    //Skips the first row
    if (n++ == 0) continue;

    //Loads the current row
    let row = data[i];

    console.log(row[1]);
    console.log(row[6]);

    //Once at the end of the list, exits the loop
    if (row[1] == "") break;

    //If value is below purchase price, adds stock ticker and difference to list of tax loss opportunities
    if (row[6] < 0) {
      message +=
        row[1] +
        ": " +
        (parseFloat(row[6].toString()) * 100).toFixed(2).toString() +
        "%<br>";
      send_message = true;
    }
  }
  if (!send_message) return;

  MailApp.sendEmail({
    to: SpreadsheetApp.getActiveSpreadsheet().getOwner().getEmail(),
    subject: "Tax-loss harvest",
    htmlBody: message,

  });
}

תורמים

הדוגמה הזו נוצרה על ידי ג'רמי גלסנברג (Jeremy Glassenberg), יועץ לניהול מוצר ולאסטרטגיית פלטפורמה. אפשר למצוא את ג'רמי ב-Twitter בכתובת @jglassenberg.

הדוגמה הזו מתוחזקת על ידי Google בעזרת מומחי Google לפיתוח.

השלבים הבאים