Моя жена недавно устроилась на новую работу в качестве независимого подрядчика. Эта форма самозанятости сопряжена с некоторыми очень интересными налоговыми последствиями и потенциально значительным списанием расходов, связанных с ведением бизнеса.

Это дало мне возможность объединить два моих самых больших хобби — разработку программного обеспечения и личные финансы — в автоматизированную систему отслеживания расходов, чтобы помочь в подготовке Графика C.

Изначально у меня был тщательно продуманный план, в котором участвовал Amazon SES; Лямбда-выражения, обрабатывающие очереди SQS, выполняющие распознавание вложений электронной почты, вызывающие API-интерфейсы Google Sheet и сохраняющие квитанции в S3… Да, немного избыточно для отслеживания некоторых квитанций, и для развертывания потребуется много инженерных ноу-хау (т. е. не то, что быть легко доступным).

Вместо этого, однажды днем ​​в кофейне во время недавнего федерального праздника, я решил поиграть с мощью Google Apps Script и в итоге создал сильно упрощенную версию того, что описано выше. Конечным результатом является довольно простой запланированный сценарий, который читает помеченные электронные письма, сохраняет вложения на Google Диске и сохраняет строку расходов с URL-адресом квитанции в Google Sheet.

Смотрите ниже, как вы можете настроить это для себя!

1. Настройка фильтра Gmail для управления маркировкой входящих квитанций.

Цель этого проекта заключалась в том, чтобы все можно было выполнять без специализированных приложений или веб-сайтов: весь процесс должен управляться электронной почтой.

Существует хорошо известная «причуда» почты Google, позволяющая добавлять все, что угодно после знака + вашего адреса GMail. Это чрезвычайно полезно для настройки автоматических фильтров для применения меток.

Это фильтр, который необходимо настроить:

Примечания:

  • При желании укажите, что должно быть вложение
  • Вы можете добавить определенную фильтрацию тем, если это полезно.
  • +expense — это просто пример: выбирайте то, что имеет смысл для вас

Затем просто настройте этот фильтр, чтобы добавить метку: в этом примере это метка 1099expense, но это может быть что угодно (только обязательно обновите код скрипта приложений).

2. Создайте пустую таблицу отслеживания расходов

Я использовал довольно простую таблицу отслеживания расходов 1099 Schedule C, которую нашел в Интернете: подробности не важны: просто убедитесь, что у нее есть имя, которое вы узнаете, и лист под названием Все деловые расходы

Столбцы, выводимые скриптом приложений (по порядку):

  • Дата
  • Торговец
  • Сумма расходов
  • График C категории
  • Подтип категории расходов
  • Email ID
  • Ссылка на квитанцию ​​по электронной почте

3. Настройте скрипт приложений

Теперь самое интересное! Вот краткий обзор того, что делает скрипт:

  • Создает ярлыки в вашем GMail, если они не существуют
  • Ищет все с меткой 1099expense (необработанная очередь)
  • Для каждого сообщения: проанализируйте тему, чтобы извлечь сумму расходов (числовую) и (необязательно) категорию и имя продавца (разделенные в теме электронной почты)
  • Скрипт также скопирует все вложения в электронном письме в уникальный подкаталог вашего Google Диска (на основе даты электронного письма и идентификатора электронной почты).
  • Наконец, вставьте новую строку расходов в свой Google Sheet с именем продавца, датой (электронного письма), суммой, категорией расходов, идентификатором электронной почты и ссылкой на загруженные квитанции.

Пошаговые инструкции

  1. Создайте новый проект в Apps Script
  2. Скопируйте скрипт в свой новый проект и настройте переменные вверху (единственное, что вам нужно изменить, — это SPREADSHEET_URL — ссылка на таблицу, которую вы создали выше).
  3. Настройте «Триггеры» — я решил запускать их каждый час.

4. Использование

После того, как вы настроили приведенный выше сценарий для запуска каждый час, начните отправлять квитанции по электронной почте на выбранный вами адрес электронной почты: [email protected] с форматом темы: dollar_amount — expense_category-merchant_name (например, 40-Meals-Souvla )

Ваш фильтр GMail добавит метку 1099expense, а затем, ежечасно (или как вы ее настроили), скрипт приложений будет читать эту папку и вставлять любые новые расходы в вашу электронную таблицу (и впоследствии перемещать обработанные электронные письма в 1099expense_done, чтобы предотвратить дублирование обработки)

Вот и все! Удачных расходов!

Конечно, с помощью этого скрипта можно сделать гораздо больше, чтобы более аккуратно обрабатывать ошибки; поддерживает больше конфигураций и параметров, но, надеюсь, этого достаточно, чтобы начать работу с Apps Script.

Прокомментируйте ниже, как вы адаптировали этот базовый пример для своего собственного варианта использования. Пожалуйста, не стесняйтесь предлагать улучшения (например, лучшую обработку ошибок или поддержку потоков с несколькими сообщениями) либо в комментариях ниже, либо в Суть.