Получайте оповещения о падении цен на акции

Уровень кодирования : начинающий
Продолжительность : 5 минут
Тип проекта : Автоматизация с временным триггером

Цели

  • Поймите, что делает решение.
  • Понять, какие функции выполняют службы Apps Script в рамках решения.
  • Настройте сценарий.
  • Запустите скрипт.

Об этом решении

Если вы покупаете акции, а их стоимость падает, вы можете продать эти акции, купить другие и получить налоговый вычет. Это называется «уплатой налоговых убытков». Внесите список своих акций в таблицу Google Таблиц и получайте уведомления по электронной почте, если цена акций упадет ниже цены покупки.

Скриншот Google Таблицы с ценами акций и оповещением по электронной почте Gmail.

Как это работает

Эта электронная таблица использует встроенную функцию Google Finance в Таблицах для получения текущих цен акций. Скрипт сравнивает цену покупки каждой акции, представленной в листинге, с её текущей ценой. Затем он отправляет вам по электронной почте список акций, цена которых упала ниже цены покупки. Вы можете настроить запуск скрипта так часто, как вам удобно.

Службы скриптов приложений

Это решение использует следующие сервисы:

  • Служба электронных таблиц — просматривает каждую котируемую акцию и сравнивает ее цену с ценой покупки.
  • Сервис Gmail — создает и отправляет электронное письмо об акциях, цена которых упала ниже покупной.

Предпосылки

Для использования этого образца вам необходимы следующие предварительные условия:

  • Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора).
  • Веб-браузер с доступом в Интернет.

Настройте сценарий

  1. Нажмите кнопку ниже, чтобы скопировать образец таблицы оповещений о налоговых потерях при сборе урожая . Проект Apps Script для этого решения прикреплён к таблице.
    Сделать копию
  2. В скопированной вами таблице обновите данные о ваших запасах или используйте предоставленные тестовые данные.

Запустить скрипт

  1. В скопированной таблице нажмите Расширения > Скрипт приложений .
  2. В раскрывающемся списке функций выберите checkLosses .
  3. Нажмите кнопку Выполнить .
  4. При появлении запроса авторизуйте скрипт. Если на экране согласия OAuth отображается предупреждение « Это приложение не проверено» , выберите «Дополнительно» > «Перейти к {Имя проекта} (небезопасно)» .

  5. Проверьте свою электронную почту на наличие списка акций, цена которых упала ниже цены покупки. Если вы не получили письмо, проверьте, не упала ли цена каких-либо акций в вашем списке ниже цены покупки.

Создайте управляемый по времени триггер

  1. Вернитесь к проекту сценария.
  2. Слева нажмите тревоги ».
  3. В правом нижнем углу нажмите Добавить триггер .
  4. В поле «Выберите функцию для запуска» убедитесь, что выбран параметр checkLosses .
  5. Для выбора источника события выберите Управляемый временем .
  6. Настройте частоту запуска скрипта и нажмите кнопку Сохранить .

Проверьте код

Чтобы просмотреть код Apps Script для этого решения, нажмите «Просмотреть исходный код» ниже:

Посмотреть исходный код

Код.gs

решения/автоматизация/оповещения о налоговых потерях-урожае/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 .

Этот образец поддерживается компанией Google с помощью экспертов Google Developer Experts.

Следующие шаги