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

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

الأهداف

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

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

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

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

آلية العمل

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

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

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

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

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

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

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

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

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

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

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

  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,

  });
}

المساهمون

تم إنشاء هذا النموذج بواسطة &quot;جيريمي غلاسنبرغ&quot;، وهو استشاري في إدارة المنتجات واستراتيجية المنصات. يمكنك التواصل مع جيريمي على Twitter ‎@jglassenberg.

تحتفظ Google بهذا النموذج بمساعدة خبراء Google المطوّرين.

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