รับการแจ้งเตือนการลดราคาหุ้น

ระดับการเขียนโค้ด: เริ่มต้น
ระยะเวลา: 5 นาที
ประเภทโปรเจ็กต์: การทำงานอัตโนมัติที่มีทริกเกอร์ที่ขึ้นอยู่กับเวลา

วัตถุประสงค์

  • ทําความเข้าใจว่าโซลูชันทํางานอย่างไร
  • ทําความเข้าใจสิ่งที่บริการ Apps Script ทําภายในโซลูชัน
  • ตั้งค่าสคริปต์
  • เรียกใช้สคริปต์

เกี่ยวกับโซลูชันนี้

หากซื้อหุ้นและมูลค่าลดลง คุณสามารถขายหุ้นนั้น ซื้อหุ้นอื่น และขอหักลดหย่อนภาษีได้ การดำเนินการนี้เรียกว่า "การใช้ประโยชน์จากผลขาดทุนทางภาษี" แสดงรายการหุ้นในสเปรดชีต Google ชีตและรับการแจ้งเตือนทางอีเมลหากราคาหุ้นลดลงต่ำกว่าราคาซื้อ

ภาพหน้าจอของ Google ชีตที่มีราคาหุ้นและการแจ้งเตือนทางอีเมลของ Gmail

วิธีการทำงาน

สเปรดชีตใช้ฟังก์ชันในตัวของ Google Finance ในชีตเพื่อรับราคาหุ้นปัจจุบัน สคริปต์จะเปรียบเทียบราคาซื้อของหุ้นแต่ละรายการที่แสดงกับราคาปัจจุบัน จากนั้นระบบจะส่งอีเมลแจ้งรายชื่อหุ้นที่ราคาลดลงต่ำกว่าราคาซื้อ คุณสามารถตั้งค่าสคริปต์ให้ทำงานบ่อยเท่าที่ต้องการ

บริการ Apps Script

โซลูชันนี้ใช้บริการต่อไปนี้

  • บริการสเปรดชีต - วนดูหุ้นที่จดทะเบียนแต่ละรายการและเปรียบเทียบราคาหุ้นกับราคาซื้อ
  • บริการ Gmail - สร้างและส่งอีเมลเกี่ยวกับหุ้นที่ราคาลดลงต่ำกว่าราคาซื้อ

ข้อกำหนดเบื้องต้น

หากต้องการใช้ตัวอย่างนี้ คุณต้องมีข้อกําหนดเบื้องต้นต่อไปนี้

  • บัญชี Google (บัญชี Google Workspace อาจต้องได้รับอนุมัติจากผู้ดูแลระบบ)
  • เว็บเบราว์เซอร์ที่มีสิทธิ์เข้าถึงอินเทอร์เน็ต

ตั้งค่าสคริปต์

  1. คลิกปุ่มต่อไปนี้เพื่อทำสำเนาสเปรดชีตตัวอย่างการแจ้งเตือนการใช้ประโยชน์จากการขาดทุนทางภาษี โปรเจ็กต์ Apps Script สำหรับโซลูชันนี้จะแนบอยู่กับสเปรดชีต
    ทำสำเนา
  2. ในสเปรดชีตที่คัดลอก ให้อัปเดตสเปรดชีตด้วยข้อมูลสินค้าคงคลังของคุณเอง หรือใช้ข้อมูลทดสอบที่ให้มา

เรียกใช้สคริปต์

  1. ในสเปรดชีตที่คัดลอก ให้คลิกส่วนขยาย > Apps Script
  2. เลือก checkLosses ในเมนูฟังก์ชันแบบเลื่อนลง
  3. คลิกเรียกใช้
  4. ให้สิทธิ์สคริปต์เมื่อได้รับข้อความแจ้ง หากหน้าจอความยินยอมของ OAuth แสดงคำเตือนว่าแอปนี้ไม่ได้รับการยืนยัน ให้ดำเนินการต่อโดยเลือกขั้นสูง > ไปที่ {ชื่อโปรเจ็กต์} (ไม่ปลอดภัย)

  5. โปรดตรวจสอบอีเมลเพื่อดูรายการหุ้นที่ราคาต่ำกว่าราคาซื้อ หากไม่ได้รับอีเมล ให้ตรวจสอบว่าราคาหุ้นในรายการต่ำกว่าราคาซื้อหรือไม่

สร้างทริกเกอร์ตามเวลา

  1. กลับไปที่โปรเจ็กต์สคริปต์
  2. คลิกทริกเกอร์ ทางด้านซ้าย
  3. คลิกเพิ่มทริกเกอร์ที่ด้านขวาล่าง
  4. ในส่วนเลือกฟังก์ชันที่จะเรียกใช้ ให้ตรวจสอบว่าได้เลือก checkLosses แล้ว
  5. ในส่วนเลือกแหล่งที่มาของเหตุการณ์ ให้เลือกตามเวลา
  6. กำหนดความถี่ที่ต้องการให้สคริปต์ทำงาน แล้วคลิกบันทึก

ตรวจสอบโค้ด

หากต้องการตรวจสอบโค้ด Apps Script ของโซลูชันนี้ ให้คลิกดูซอร์สโค้ดด้านล่าง

ดูซอร์สโค้ด

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,

  });
}

ผู้ร่วมให้ข้อมูล

ตัวอย่างนี้จัดทำโดย Jeremy Glassenberg ที่ปรึกษาด้านการจัดการผลิตภัณฑ์และกลยุทธ์แพลตฟอร์ม ติดตาม Jeremy บน Twitter ได้ทาง @jglassenberg

ตัวอย่างนี้ได้รับการดูแลโดย Google ด้วยความช่วยเหลือจากผู้เชี่ยวชาญด้านการพัฒนาซอฟต์แวร์ของ Google

ขั้นตอนถัดไป