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

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

Цели

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

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

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

Снимок экрана 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. Настройте частоту запуска сценария и нажмите «Сохранить» .

Просмотрите код

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

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

Код.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.

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