Receber alertas de redução no preço de ações

Nível de codificação: iniciante
Duração: 5 minutos
Tipo de projeto: automação com um gatilho orientado por tempo

Objetivos

  • Entenda o que a solução faz.
  • Entenda o que os serviços do Apps Script fazem na solução.
  • Configure o script.
  • Execute o script.

Sobre esta solução

Se você comprar uma ação e o valor cair, poderá vendê-la, comprar outra e reivindicar uma dedução fiscal. Isso é conhecido como colheita de perdas fiscais. Liste suas ações em uma planilha do Google Planilhas e receba alertas por e-mail se o preço de uma ação cair abaixo do preço de compra.

Captura de tela da Planilha Google com preços de ações e um alerta de e-mail do Gmail.

Como funciona

A planilha usa a função integrada do Google Finanças nas Planilhas Google para conferir os preços atuais das ações. O script compara o preço de compra de cada ação listada com o preço atual. Em seguida, ele envia por e-mail uma lista de ações que caíram abaixo do preço de compra. É possível definir o script para ser executado com a frequência que quiser.

Serviços do Apps Script

Esta solução usa os seguintes serviços:

  • Serviço de planilha: percorre cada ação listada e compara o preço dela com o preço de compra.
  • Serviço do Gmail: cria e envia um e-mail com as ações que caíram abaixo do preço de compra.

Pré-requisitos

Para usar este exemplo, você precisa dos seguintes pré-requisitos:

  • Uma Conta do Google (as contas do Google Workspace podem exigir a aprovação do administrador).
  • Um navegador da Web com acesso à Internet.

Configurar o script

  1. Clique no botão a seguir para fazer uma cópia da planilha de exemplo de alertas de colheita de perdas fiscais. O projeto do Apps Script para essa solução é anexado à planilha.
    Fazer uma cópia
  2. Na planilha copiada, atualize a planilha com suas próprias informações de estoque ou use os dados de teste fornecidos.

Executar o script

  1. Na planilha copiada, clique em Extensões > Apps Script.
  2. No menu suspenso de funções, selecione checkLosses.
  3. Clique em Executar.
  4. Quando solicitado, autorize o script. Se a tela de consentimento do OAuth mostrar o aviso Este app não está verificado, continue selecionando Avançado > Acessar {Nome do projeto} (inseguro).

  5. Verifique seu e-mail para conferir uma lista de ações que caíram abaixo do preço de compra. Se você não receber um e-mail, verifique se algum dos preços das ações na sua lista é menor que o preço de compra.

Criar um acionador baseado em tempo

  1. Volte ao projeto do script.
  2. À esquerda, clique em Acionadores .
  3. No canto inferior direito, clique em Adicionar gatilho.
  4. Em Escolher a função a ser executada, verifique se a opção checkLosses está selecionada.
  5. Em Selecionar origem do evento, selecione Baseado em tempo.
  6. Defina a frequência de execução do script e clique em Salvar.

Revisar o código

Para revisar o código do Apps Script para essa solução, clique em Ver código-fonte abaixo:

Acessar o código-fonte

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,

  });
}

Colaboradores

Este exemplo foi criado por Jeremy Glassenberg, consultor de estratégia de gerenciamento de produtos e plataformas. Encontre Jeremy no Twitter @jglassenberg.

Esse exemplo é mantido pelo Google com a ajuda de especialistas em desenvolvimento do Google.

Próximas etapas