Otrzymuj alerty o obniżce ceny akcji

Poziom kodowania: początkujący
Czas trwania: 5 minut
Typ projektu: automatyzacja z regułą zależną od czasu

Cele

  • Dowiedz się, do czego służy dane rozwiązanie.
  • dowiedzieć się, jak usługi Apps Script działają w danym rozwiązaniu.
  • Skonfiguruj skrypt.
  • Uruchom skrypt.

Informacje o rozwiązaniu

Jeśli po zakupie akcji ich wartość spadnie, możesz ją sprzedać, kupić kolejną i poprosić o odliczenie podatku. Jest to tzw. utrata podatków. Zapisz notowania giełdowe w arkuszu kalkulacyjnym Arkuszy Google i otrzymuj alerty e-mail, jeśli ich cena spadnie poniżej ceny zakupu.

Zrzut ekranu arkusza Google z cenami akcji i powiadomieniem e-mail w Gmailu.

Jak to działa

Do sprawdzania bieżących cen akcji jest używany wbudowana funkcja Finansów Google w Arkuszach. Skrypt porównuje cenę zakupu wszystkich notowanych akcji z ich aktualną ceną. Następnie wysyłany jest e-mail z listą akcji, które spadły poniżej ceny zakupu. Możesz ustawić uruchamianie skryptu tak często, jak chcesz.

Usługi Apps Script

To rozwiązanie korzysta z następujących usług:

  • Usługa arkuszy kalkulacyjnych – powoduje zapętlenie wszystkich notowanych akcji i porównanie ich cen z ceną zakupu.
  • Usługa Gmail – tworzy i wysyła e-maile z notowaniami akcji, które spadła poniżej ceny zakupu.

Wymagania wstępne

Aby korzystać z tego przykładu, musisz spełnić te wymagania wstępne:

  • konta Google (konta Google Workspace mogą wymagać zatwierdzenia przez administratora),
  • Przeglądarka z dostępem do internetu.

Konfigurowanie skryptu

  1. Kliknij przycisk poniżej, aby utworzyć kopię przykładowego arkusza Alerty o zgromadzeniu podatku od towarów i usług. Projekt Apps Script dla tego rozwiązania jest dołączony do arkusza kalkulacyjnego.
    Utwórz kopię
  2. W skopiowanym arkuszu kalkulacyjnym zaktualizuj arkusz, podając w nim własne informacje giełdowe. Możesz też użyć podanych danych testowych.

Uruchom skrypt

  1. W skopiowanym arkuszu kalkulacyjnym kliknij Rozszerzenia > Apps Script.
  2. Z menu funkcji wybierz checkLosses.
  3. Kliknij Uruchom.
  4. Gdy pojawi się odpowiedni komunikat, autoryzuj skrypt. Jeśli na ekranie zgody OAuth wyświetli się ostrzeżenie: Ta aplikacja nie jest zweryfikowana, wybierz Zaawansowane > Otwórz projekt {Project Name} (niebezpieczny).

  5. Sprawdź pocztę e-mail, by zobaczyć listę akcji, które spadły poniżej ceny zakupu. Jeśli nie dotarł do Ciebie e-mail, sprawdź, czy ceny akcji na Twojej liście nie są niższe od ceny zakupu.

Tworzenie reguły opartej na czasie

  1. Wróć do projektu skryptu.
  2. Po lewej stronie kliknij Reguły .
  3. W prawym dolnym rogu kliknij Dodaj wyzwalacz.
  4. W polu Wybierz funkcję do uruchomienia zaznacz checkLosses.
  5. W polu Wybierz źródło zdarzeń wybierz Na podstawie czasu.
  6. Określ, jak często chcesz uruchamiać skrypt, i kliknij Zapisz.

Sprawdź kod

Aby sprawdzić kod Apps Script dla tego rozwiązania, kliknij Wyświetl kod źródłowy poniżej:

Pokaż kod źródłowy

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,

  });
}

Współtwórcy

Został on stworzony przez Jeremy'ego Glassenberga, konsultanta ds. zarządzania produktami i strategii platformy. Znajdź Jeremy'ego na Twitterze @jglassenberg.

Ta próbka jest opracowywana przez Google z pomocą Ekspertów Produktowych Google.

Dalsze kroki