الحصول على تنبيهات بشأن انخفاض أسعار الأسهم

مستوى الترميز: مبتدئ
المدة: 5 دقائق
نوع المشروع: برمجة باستخدام عامل تشغيل مستند إلى الوقت

الأهداف

  • فهم دور الحلّ
  • فهم ما تفعله خدمات Apps Script ضمن الحلّ
  • إعداد النص البرمجي
  • شغِّل النص البرمجي.

لمحة عن هذا الحل

إذا اشتريت أسهمًا وانخفاضت قيمتها، يمكنك بيع هذه الأسهم وشراء أسهم أخرى والاستفادة من خصم ضريبي. ويُعرف ذلك باسم "تحقيق خسائر ضريبية". يمكنك إدراج أسهمك في جدول بيانات على "جداول بيانات Google" والحصول على تنبيهات عبر البريد الإلكتروني إذا انخفض سعر السهم عن سعر الشراء.

لقطة شاشة لجدول بيانات Google تعرض أسعار الأسهم وتنبيهًا عبر البريد الإلكتروني في Gmail

آلية العمل

يستخدم جدول البيانات الدالة المضمّنة في Google Finance في "جداول بيانات Google" للحصول على الأسعار الحالية للأسهم. يقارن النص البرمجي سعر شراء كل سهم مُدرَج بسعره الحالي. بعد ذلك، ترسل إليك رسالة إلكترونية تتضمّن قائمة بالسهم التي انخفضت قيمتها عن سعر الشراء. يمكنك ضبط النص البرمجي لكي يتم تنفيذه بقدر ما تريد.

خدمات "برمجة تطبيقات Google"

يستخدم هذا الحلّ الخدمات التالية:

  • خدمة جدول البيانات: تتنقل هذه الخدمة في كل سهم مُدرَج وتقارن سعر السهم بسعر الشراء.
  • خدمة Gmail: لإنشاء رسائل إلكترونية بشأن الأسهم التي انخفضت قيمتها إلى ما دون سعر الشراء وإرسالها

المتطلبات الأساسية

لاستخدام هذا العيّنة، يجب استيفاء المتطلبات الأساسية التالية:

  • حساب Google (قد تحتاج حسابات Google Workspace إلى موافقة المشرف).
  • متصفح ويب يمكنه الوصول إلى الإنترنت

إعداد النص البرمجي

  1. انقر على الزر التالي لإنشاء نسخة من نموذج جدول بيانات تنبيهات حصاد الخسائر الضريبية. تم إرفاق مشروع "برمجة التطبيقات" لهذا الحلّ بجدول البيانات.
    إنشاء نسخة
  2. في جدول البيانات المنسوخ، عدِّل الجدول بإضافة معلومات المستودع الخاصة بك، أو استخدِم بيانات الاختبار المقدَّمة.

تشغيل النص البرمجي

  1. في جدول البيانات المنسوخ، انقر على الإضافات > Apps Script.
  2. في القائمة المنسدلة للدالة، اختَر checkLosses.
  3. انقر على تشغيل.
  4. امنح الإذن للنصّ البرمجي عند مطالبتك بذلك. إذا ظهرت الرسالة التحذيرية لم يتم التحقّق من هذا التطبيق على شاشة موافقة OAuth، يمكن المتابعة من خلال النقر على الإعدادات المتقدّمة > الانتقال إلى {Project Name} (غير آمن).

  5. اطّلِع على بريدك الإلكتروني للحصول على قائمة بالأسهم التي انخفضت قيمتها عن سعر الشراء. إذا لم تصلك رسالة إلكترونية، تحقّق ممّا إذا كان أي من أسعار الأسهم في قائمتك أقل من سعر الشراء.

إنشاء عامل تشغيل مستند إلى الوقت

  1. ارجع إلى مشروع النص.
  2. على يمين الصفحة، انقر على العوامل المشغِّلة .
  3. في أسفل يسار الصفحة، انقر على إضافة مشغّل.
  4. بالنسبة إلى اختيار الدالة المطلوب تشغيلها، تأكَّد من اختيار 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,

  });
}

المساهمون

تم إنشاء هذا العيّنة من قِبل جيريمي غلاسنبرغ، استشاري إدارة المنتجات والمنصات الاستراتيجية. يمكنك التواصل مع جيريمي على Twitter ‎@jglassenberg.

تُعدّ Google هذه العينة بمساعدة خبراء Google Developers.

الخطوات التالية