noneroll/README.md
2025-03-13 21:14:13 +00:00

69 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# noneroll
This Google Apps Script moves your low priority (promotional, social, political, etc.) emails in Gmail to a custom label and sends you a daily synopsis of received emails for review. Basically, this is `unroll.me` without any third-party access or [creepy data brokering](https://archive.is/30hj9).
## New Features & Improvements
- **Global Constants:**
Configure the script easily by setting global constants for your spreadsheet ID, sheet name, Gmail label, and email digest time range.
- **Performance Enhancements:**
The script now uses JavaScript Sets and batch updates (instead of multiple `appendRow` calls) to handle larger datasets more efficiently. My personal instance of this script filters messages from almost 1300 email addresses.
- **Automatic Deduplication:**
A new `dedupeEmails` function is included to automatically remove duplicate email addresses from your spreadsheet. You can schedule this to run periodically.
- **Improved Unsubscribe Link Extraction & HTML Template:**
The unsubscribe link extraction has been refined, and the HTML template now uses centralized CSS.
- **Modern Code Practices:**
The script has been updated with ES6 syntax (`const`, `let`, forof loops) for improved clarity and maintainability.
## Configuration
1. **Create a Google Sheet:**
Create a new spreadsheet in Google Sheets. This spreadsheet will be used to keep track of low priority email addresses.
2. **Create a Gmail Label:**
Create a new Gmail label (e.g., `zbulk`).
If you use a different label, update the `ZBULK_LABEL` constant in the script accordingly.
3. **Set Up the Google Apps Script Project:**
- Create a new Google Apps Script project.
- Copy the updated code into the project's `Code.gs` file.
- Replace the placeholder `SHEET_ID` (currently set to `'sheetID'`) with the actual ID of the spreadsheet (the string between `spreadsheets/d/` and `/edit` in your sheet's URL).
- Update `SHEET_NAME` if your target sheet name differs from the default ("Sheet1").
4. **Configure the HTML Template:**
- Include the updated HTML file named `email.html` in your project. This file controls the appearance of your daily digest.
5. **Set Up Triggers:**
Configure time-driven triggers for:
- **`arch`:** Every 15 minutes (or as desired)
Archives, labels, and marks low priority emails as read.
- **`addEmail`:** Daily (e.g., between midnight and 1am)
Batches and appends new email addresses to your spreadsheet.
- **`noneroll`:** Daily (e.g., between 5 and 6am)
Sends a digest email summarizing emails from the past 24 hours.
- **`dedupeEmails`:** Weekly (every Sunday, between 11pm and midnight)
Automatically deduplicates the email list in your spreadsheet.
## Usage & Maintenance
- **Tagging Emails:**
Tag any emails you wish to include in your low priority digest with your chosen Gmail label (e.g., `zbulk`).
- **Spreadsheet Data:**
Column A of your spreadsheet will be populated with the email addresses of low priority senders.
The scripts `addEmail` function should prevent duplicate entries, but the `dedupeEmails` function will periodically clean up any accidental duplicates.
- **Disabling Low Priority Flag:**
To stop an email from being flagged as low priority, remove its corresponding email address from your spreadsheet and (for safety) remove the label from any related messages in Gmail.
- **Performance Considerations:**
The updated script handles thousands of entries efficiently. For extremely large datasets, consider archiving older data or scheduling deduplication more frequently.
## Credits
Forked from [a GitHub project by Niraj D](https://github.com/nirajd/noneroll). Thanks for making this possible! 🙌🏻