دریافت هشدار کاهش قیمت سهام

سطح کدنویسی : مبتدی
مدت زمان : 5 دقیقه
نوع پروژه : اتوماسیون با یک ماشه زمان محور

اهداف

  • درک کنید که راه حل چه کاری انجام می دهد.
  • آنچه را که سرویس های Apps Script در راه حل انجام می دهند، بدانید.
  • اسکریپت را تنظیم کنید
  • اسکریپت را اجرا کنید.

در مورد این راه حل

اگر سهامی را خریداری کردید و ارزش آن کاهش یافت، می‌توانید آن سهام را بفروشید، سهام دیگری بخرید و تقاضای کسر مالیات کنید. انجام این کار به عنوان برداشت از دست دادن مالیات شناخته می شود. سهام خود را در صفحه‌گسترده Google Sheets فهرست کنید و در صورت کاهش قیمت سهام از قیمت خرید، هشدارهای ایمیلی دریافت کنید.

عکس صفحه Google Sheet با قیمت سهام و هشدار ایمیل Gmail.

چگونه کار می کند

صفحه‌گسترده از عملکرد داخلی Google Finance در کاربرگ‌نگار برای دریافت قیمت‌های فعلی سهام استفاده می‌کند. اسکریپت قیمت خرید هر سهم فهرست شده را با قیمت فعلی آن مقایسه می کند. سپس، فهرستی از سهامی که کمتر از قیمت خریدشان کاهش یافته است را برای شما ایمیل می‌کند. می توانید اسکریپت را طوری تنظیم کنید که هر چند وقت یکبار که می خواهید اجرا شود.

خدمات اسکریپت برنامه ها

این راه حل از خدمات زیر استفاده می کند:

  • سرویس صفحه گسترده - از طریق هر سهام فهرست شده حلقه می زند و قیمت سهام را با قیمت خرید مقایسه می کند.
  • سرویس جیمیل – از سهام هایی که کمتر از قیمت خریدشان سقوط کرده اند ایمیلی ایجاد و ارسال می کند.

پیش نیازها

برای استفاده از این نمونه به پیش نیازهای زیر نیاز دارید:

  • یک حساب Google (حساب‌های Google Workspace ممکن است به تأیید سرپرست نیاز داشته باشند).
  • یک مرورگر وب با دسترسی به اینترنت.

اسکریپت را تنظیم کنید

  1. روی دکمه زیر کلیک کنید تا از صفحه گسترده نمونه هشدارهای تلفات مالیاتی کپی کنید. پروژه Apps Script برای این راه حل به صفحه گسترده پیوست شده است.
    یک کپی تهیه کنید
  2. در صفحه‌گسترده کپی شده خود، برگه را با اطلاعات سهام خود به‌روزرسانی کنید یا از داده‌های آزمایشی ارائه شده استفاده کنید.

اسکریپت را اجرا کنید

  1. در صفحه‌گسترده کپی‌شده، روی افزونه‌ها > اسکریپت برنامه‌ها کلیک کنید.
  2. در منوی تابع، checkLosses را انتخاب کنید.
  3. روی Run کلیک کنید.
  4. وقتی از شما خواسته شد، اسکریپت را مجاز کنید. اگر صفحه رضایت OAuth اخطار را نشان می‌دهد، این برنامه تأیید نشده است ، با انتخاب پیشرفته > رفتن به {Project Name} (ناامن) ادامه دهید.

  5. ایمیل خود را برای لیستی از سهامی که زیر قیمت خریدشان سقوط کرده اند بررسی کنید. اگر ایمیلی دریافت نکردید، بررسی کنید که آیا هر یک از قیمت‌های سهام در فهرست شما کمتر از قیمت خریدشان است یا خیر.

یک محرک زمان محور ایجاد کنید

  1. بازگشت به پروژه اسکریپت.
  2. در سمت چپ، روی Triggers کلیک کنید.
  3. در پایین سمت چپ، روی افزودن ماشه کلیک کنید.
  4. برای انتخاب تابعی که باید اجرا شود ، مطمئن شوید که checkLosses انتخاب شده است.
  5. برای انتخاب منبع رویداد ، 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,

  });
}

مشارکت کنندگان

این نمونه توسط جرمی گلسنبرگ، مشاور مدیریت محصول و استراتژی پلتفرم ایجاد شده است. جرمی را در توییتر @jglassenberg پیدا کنید.

این نمونه توسط گوگل با کمک کارشناسان توسعه دهنده گوگل نگهداری می شود.

مراحل بعدی