This library synchronizes transactions from Beancount files to a Google Sheets with shared transactions. This is helpful when you share expenses with another person who does not use beancount.
Downloaderdepending on which way you want to sync, providing the HTTP URL of the Sheet as well as the file URL of the beancount file.
starton the instance you created in step 1, passing in the authentication instance from step 2.
SyncResultif the sync was successful. This will include:
The synchronization relies on meta data in your beancount file for configuration. Please add these to your beancount file.
commoditySymbol: The synchronization only works with one commodity which needs to be specified here
account: Account which is used to keep track of the balance between the people
tag: Tag which is appended to all transactions which are or should be synchronized
name: Your name - this will be used to identify the colunms of the sheet
dateTolerance: Tolerance in days which will be used when checking if a transactions already exists
These options are specified globally via
customs like this (the date does not matter and will be ignored):
YYYY-MM-DD custom "sheet-sync-settings" "commoditySymbol" "CAD"
You can attatch
sheet-sync-category metadata to accounts to map categories from the sheet to accounts and vice-versa in a 1-1 relationship. This is optional, in case no mapping could be found a fallback account / an empty category will be used.
2020-12-26 open Expenses:Communication:Internet sheet-sync-category: "Internet"
The Google sheet need to be in a specifc format in order to be read. The tab must be named
The following columns are required to be within colunms A-I, other columns are ignored:
Datein yyyy-MM-dd format
Paid toe.g. Store name, can be an empty string
.as decimal point.
,to separate thousand is ok, accouting style with brackets for negative values is supported
CategorySee account configuration above
Name2should be the name of the people (e.g. replace them). One of them must be the same as configured as name in the ledger (see above). Each column must contain a number which represents the amount this party is paying for the purchase. Same formatting rules as for amount apply.
Who paidOne of the two names
CommentWhile the column is required, it can be an empty string
The library supports the Swift Package Manger, so simply add a dependency in your
.package(url: "https://github.com/Nef10/SwiftBeanCountSheetSync.git", .upToNextMajor(from: "X.Y.Z")),
|Last commit: 1 week ago|