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

Nível de programação: iniciante
Duração: 5 minutos
Tipo de projeto: automação com um gatilho baseado em 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 dela cair, é possível vender e comprar outra, além de reivindicar uma dedução fiscal. Isso é conhecido como compensação de prejuízo fiscal. Liste suas ações em uma planilha Google e receba alertas por e-mail se o preço de uma ação cair abaixo do preço de compra.

Captura de tela de uma 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 para receber 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. Você pode definir a frequência de execução do script.

Serviços do Apps Script

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

  • Serviço de planilha: faz um loop em cada ação listada e compara o preço da ação 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 esta amostra, você precisa atender aos 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 compensação de prejuízos fiscais. O projeto do Apps Script para essa solução está anexado à planilha.
    Fazer uma cópia
  2. Na planilha copiada, atualize a página 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ção, selecione checkLosses.
  3. Clique em Executar.
  4. Quando solicitado, autorize o script. Se a tela de permissão OAuth mostrar o aviso Este app não foi verificado, selecione Avançado > Acessar {Nome do projeto} (não seguro).

  5. Confira no seu e-mail uma lista de ações que caíram abaixo do preço de compra. Se você não recebeu um e-mail, verifique se algum dos preços das ações na sua lista está mais baixo do que o preço de compra.

Criar um gatilho baseado em tempo

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

Revisar o código

Para revisar o código do Apps Script dessa 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

Esta amostra foi criada por Jeremy Glassenberg, consultor de estratégia de plataforma e gerenciamento de produtos. Encontre o Jeremy no Twitter @jglassenberg.

Esta amostra é mantida pelo Google com a ajuda dos Google Developer Experts.

Próximas etapas