DataMateApps

Save any data as a record

This Privacy Policy applies to the following Google Workspace™ add-ons, developed and maintained by Excellence-US, LLC (“we”, “us”, or “our”):

By using any of these Add-ons (“the Add-ons”), you agree to the practices described in this Privacy Policy. We are committed to safeguarding your privacy and complying with the Google API Services User Data Policy, including its Limited Use requirements.

Data We Collect and How We Use It

DataMateApps collect and process data to provide their core functionalities, such as saving records, managing contacts, creating forms, and generating address blocks. We also collect limited data for analytics to monitor usage and improve our services. Below is a detailed breakdown of the data we access and how it’s used:

We do not collect or process data beyond what is necessary for the app’s functionality or analytics. All data accessed via Google™ APIs is handled securely. Notification emails sent to projectprodigyapp@gmail.com are used solely for usage tracking and are not shared with third parties beyond Excellence-US, LLC.

Permissions We Request

DataMateApps and AddressBlock require specific permissions to function. These permissions allow us to access your Google™ account data as described below. Each permission is necessary for the app’s core features, and we’ve explained why we need it and why a narrower scope wouldn’t work.

DataMateApps Permissions

https://www.googleapis.com/auth/spreadsheets: Allows DataMateApps to see, edit, create, and delete Google Sheets™. We use this to create and manage spreadsheets for records, templates (e.g., inventory, timesheets), contact lists, and usage counters. A narrower scope wouldn’t suffice because dynamic spreadsheet operations are central to the app.

https://www.googleapis.com/auth/drive: (Only used in open-source code for UploadFile and Signature form fields when deployed as web app.) Allows DataMateApps to see, edit, create, and delete files in Google Drive™. We use this to store form uploads (e.g., images, PDFs), signatures, and generated files, such as reports or templates. A narrower scope wouldn’t suffice because full Drive access is required for file management.

https://www.googleapis.com/auth/script.container.ui: Allows DataMateApps to display third-party web content in prompts, dialogs, and sidebars within Google Sheets™. We use this to show interactive UI elements, such as form previews, contact forms, or sidebars for data entry. A narrower scope wouldn’t suffice because custom UI is required for user interaction.

https://www.googleapis.com/auth/script.send_mail: To send notifications to send emails via Google Apps Script when a form is submitted. A narrower scope wouldn’t suffice because this scope ensures reliable email delivery.

https://www.googleapis.com/auth/gmail.send: This scope is essential for the core functionality of DataMateApps, specifically the "Mail It" feature, which enables users to send emails directly from a Google™ Spreadsheet. This feature allows users to select a range of spreadsheet data, format it as an HTML table, and send it as an email to recipients listed in a "contacts" sheet (Column P for email addresses, Column A for names). The emails are sent using the Gmail™App.sendEmail method in Google Apps Script™, which constructs and sends HTML-formatted emails based on user inputs from a sidebar interface.

https://www.googleapis.com/auth/script.external_request: Allows AddressBlock to connect to external services. We use this to fetch address-related data (e.g., via geocoding APIs) to enhance address accuracy. A narrower scope wouldn’t suffice because external data integration is critical for the feature.

https://www.googleapis.com/auth/script.scriptapp: Allows SnapSync to programmatically manage triggers for automated syncs and scheduled tasks. A narrower scope wouldn’t suffice because automated syncs and scheduling is critical for the feature.

Third-Party Integrations

DataMateApps may connect to external services via the script.external_request scope to enhance functionality, such as fetching geocoding data for addresses or integrating with APIs for form processing. These services are carefully selected, and we ensure they comply with data protection standards. No personal data is shared with third parties unless explicitly required for the service, and only with your consent. The notification emails sent to projectprodigyapp@gmail.com are managed by Excellence-US, LLC and are not shared with third parties.

Data Sharing

We do not share your personal data with third parties, except as described below:

All other data accessed via Google APIs remains within the Google ecosystem or is processed securely by our app.

Data Retention

Data stored in your Google Sheets™, Drive™, or Gmail™ accounts remains under your control and is retained according to your Google™ account settings. Specifically:

You can delete data in your Google account at any time or request deletion of data we hold (e.g., website comments) by contacting us.

Data Security

We implement industry-standard security measures to protect your data, including secure connections and compliance with Google’s™ API security requirements. However, no system is completely secure, and we encourage you to use strong passwords and enable two-factor authentication on your Google™ account.

Your Data Rights

You have full control over your data. You can:

To exercise these rights, contact us at the link below. We will respond within 30 days. Note that we may retain certain data for legal or administrative purposes, as required by law.

Comments and Reviews

If you leave comments or reviews on our website (https://datamateapp.github.io), we collect the data provided in the comment form, such as your name and comment content. This data is used to display your comment publicly and is retained indefinitely unless you request deletion.

Contact Us

If you have questions, feedback, or requests regarding your data, please contact us at: Contact Form.

Our website: https://datamateapp.github.io

Who We Are

Excellence-US, LLC is the developer of DataMateApps and AddressBlock, designed to enhance productivity within Google Workspace. We are committed to transparency, user privacy, and delivering reliable tools for data management.

DataMateApps Function Descriptions

The following describes the core functions of DataMateApps, detailing how they interact with your Google Sheets data to provide features like record saving, contact management, and form building.

onInstall()

Triggers when the add-on is installed, calling onOpen() to initialize the custom menu.

onOpen(e)

Creates a custom menu named "DataMate 🌐" in Google Sheets with options for saving records, resetting inputs, managing templates, building forms, handling contacts, and showing tutorials.

doNothing()

Displays an alert prompting the user to select a template option when no specific action is chosen.

showUploadDialog()

Opens a modal dialog to upload a CSV file, using the UploadCSV.html interface for importing contacts.

processCSV(csvContent)

Parses and processes uploaded CSV data, mapping specific columns from an "Import" sheet to a "contacts" sheet based on predefined mappings, then notifies the user of successful import.

edit()

Populates the "Address" sheet with VLOOKUP formulas to retrieve contact details (e.g., company, email, address) from the "contacts" sheet based on a lookup value in cell F1.

newcontact()

Adds a new contact by copying data from the "NewContact" sheet to the "contacts" sheet, inserting a new row, setting a concatenated name formula, sorting contacts, and clearing input fields.

copyInput1()

Copies data, formats, formulas, and column widths from "Sheet1" (A3:Q48) to the "Input" sheet, then activates cell C4 in the "Input" sheet.

copyInput2()

Copies data, formats, formulas, and column widths from "Sheet1" (A3:Q48) to the "View_Print" sheet, then activates cell A1 in the "View_Print" sheet.

newfile()

Creates or verifies the existence of core sheets ("Input", "View_Print", "Log", "Update", "Data"), sets up headers, formulas, formatting, and a help hyperlink, then calls copyInput1(), view(), and sends a notification email.

save()

Saves data from the "Input" sheet (A1:Q48) to the "Data" sheet in specific columns, copies images, updates the "Update" and "Log" sheets with formulas, adds a hyperlink to "View_Print", and sends a notification email.

view()

Refreshes the "View_Print" sheet by calling copyInput2() and setting VLOOKUP formulas to display data from the "Update" and "Data" sheets based on a key in A1.

contacts()

Creates or updates "contacts", "Address", and "NewContact" sheets, sets up headers, formulas, data validation, and formatting for contact management, then activates cell B1 in the "Address" sheet.

EditAddressSheet()

Applies VLOOKUP formulas to the "Address" sheet (F2:F14) to fetch contact details by name from the "contacts" sheet, adds data validation to a specified cell in "Sheet1", and copies formulas below it.

EditAddressSheet1()

Applies INDEX/MATCH formulas to the "Address" sheet (G2:G14) to fetch contact details by company from the "contacts" sheet, adds data validation to a specified cell in "Sheet1", and copies formulas below it.

setup()

Initializes an "Inventory" template by creating or configuring sheets (e.g., "Inventory", "Stock") with predefined headers, formulas, and formatting for tracking inventory items.

updateInventory()

Updates the "Inventory" sheet by copying new or modified stock data from an input range to a master inventory log, recalculating totals, and maintaining stock levels.

setupTS()

Sets up a "Weekly Timesheets" template by creating sheets (e.g., "Timesheet", "Summary") with headers, time-tracking formulas, and data validation for employee hours.

copyToCodeTotals()

Copies cost code data from a timesheet or input sheet to a "Code Totals" sheet, aggregating hours or costs by code for financial tracking.

setupPO()

Configures a "Purchase Order" template by creating sheets (e.g., "PO", "Items") with headers, formulas for totals, and data validation for supplier and item details.

previewForm()

Displays a preview of a form built in the "FormSetup" sheet, rendering fields defined in the FormBuilder (e.g., Text, Dropdown) using an HTML interface for testing.

showFormBuilder()

Opens a sidebar or modal dialog with the FormBuilder.html interface, allowing users to create or edit form fields and save configurations to the "FormSetup" sheet.

showMailItSidebar()

Displays a sidebar using MailIt.html to compose emails, selecting sheets, ranges, and contacts for sending or drafting emails with embedded data.