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

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

מטרות

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

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

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

גיליון Google עם מחירי מניות והתראה באימייל ב-Gmail.

איך זה עובד

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

שירותי Apps Script

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

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

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

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

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

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

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

    יצירת עותק

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

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

  1. בגיליון האלקטרוני שהעתקתם, לוחצים על תוספים > Apps Script.
  2. בתפריט הנפתח של הפונקציה, בוחרים באפשרות checkLosses.
  3. לוחצים על Run.
  4. כשמוצגת בקשה, מאשרים את הסקריפט. <<../_snippets/oauth.md>>
  5. באימייל שלכם תופיע רשימה של מניות שהמחיר שלהן ירד מתחת למחיר הרכישה. אם לא קיבלתם אימייל, בדקו אם אחד ממחירי המניות ברשימה שלכם נמוך ממחיר הרכישה.

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

  1. חוזרים לפרויקט התסריט.
  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
  const sheet =
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calculations");
  const source = sheet.getRange("A:G");
  const 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 (const i in data) {
    //Skips the first row
    if (n++ === 0) continue;

    //Loads the current row
    const 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]}: ${(Number.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 Developer Experts.

השלבים הבאים