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

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

מטרות

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

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

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

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

איך זה עובד

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

שירותי Apps Script

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

  • שירות של גיליון אלקטרוני – השירות עובר על כל המניות הנסחרות ומשויך את מחיר המניה למחיר הרכישה.
  • שירות Gmail – יצירת אימייל ושליחתו עם רשימת המניות שירדו מתחת למחיר הרכישה.

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

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

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

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

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

מריצים את הסקריפט

  1. בגיליון האלקטרוני שהעתקתם, לוחצים על תוספים > Apps Script.
  2. בתפריט הנפתח של הפונקציה, בוחרים באפשרות checkLosses.
  3. לוחצים על Run.
  4. כשמוצגת בקשה, מאשרים את הסקריפט. אם במסך ההסכמה ל-OAuth מוצגת האזהרה This app isn't verified, ממשיכים על ידי בחירה באפשרות Advanced > Go to {Project Name} (unsafe).

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

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

  1. חוזרים לפרויקט הסקריפט.
  2. בצד ימין, לוחצים על טריגרים .
  3. בפינה השמאלית התחתונה, לוחצים על הוספת טריגר.
  4. בקטע Choose which function to run (בחירת הפונקציה להרצה), מוודאים שהאפשרות checkLosses מסומנת.
  5. בשדה Select event source, בוחרים באפשרות Time-driven.
  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), יועץ בתחומי ניהול מוצר ואסטרטגיית פלטפורמה. אפשר למצוא את Jeremy ב-Twitter‏ @jglassenberg.

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

השלבים הבאים