Spreadsheet as the Central Input Hub

Design approach to automatically generate invoices from spreadsheets without changing existing workflows

SpreadsheetGoogle Apps ScriptWorkflowAutomationSmall Business
4 min read

About This Topic

For small and medium-sized businesses, spreadsheets are the most familiar tool. In this project, we built a system that uses spreadsheets as the "center of order management" and automatically sends data to invoicing services.

When introducing new systems, resistance from the workplace is often the biggest barrier. That's why we chose to leverage spreadsheets that the team is already comfortable with.

Why This Design Matters

New Input Screens Have High Learning Costs

A common failure pattern in new system implementations is "building a feature-rich input screen that nobody uses." If the system isn't adopted, the investment is wasted.

Dedicated System
Learning CostHigh
Workplace ResponseStrong resistance, tendency to revert to old methods
Spreadsheet-based
Learning CostNear Zero
Workplace ResponseGet automation benefits with familiar operations

Strengths of Spreadsheets

  • Everyone can use them: Excel/Spreadsheet skills are basic PC literacy
  • Highly flexible: Freely add or rearrange columns
  • Great visibility: See the whole picture in a list view
  • Collaborative editing: Multiple people can work simultaneously

System Overview

Data entered in the spreadsheet is read by Google Apps Script (GAS) and automatically sent to the invoicing service.

System Architecture
Spreadsheet (Order Management)

1 row = 1 product. Multiple rows grouped by invoice number

GAS: Read selected rows
Google Apps Script

Get column names from header → Read selection → Group by invoice number → Convert to JSON and POST

HTTPS POST (JSON)
Integration App (Cloud)

Call invoicing service API → Return results

Combining Multiple Rows into One Invoice

Order data is managed with one row per product, but actual invoices need to combine multiple products into one document.

To solve this, we implemented grouping by invoice number.

Multi-row Consolidation Process
Read Selected Range

User selects rows to process

Group by Invoice Number

Rows with the same invoice number are combined into one group

Convert Each Group to JSON

Each group becomes one invoice data object

Create Invoice

Even 10 line items become one invoice

Result Feedback

Whether the invoice was successfully created or resulted in an error is automatically written back to a designated column in the spreadsheet.

OK
MeaningSuccessfully created
Next ActionInvoice number is also recorded
Error
MeaningCreation failed
Next ActionCheck error details and fix
Duplicate
MeaningAlready created
Next ActionPrevents duplicate creation (normal behavior)

Safe Processing with Allow Lists

Spreadsheets may contain columns like internal notes that shouldn't be included in invoices. We introduced a mechanism to only process columns in the allow list.

Allow List Examples

  • invoice_number - Invoice number (grouping key)
  • partner_code - Partner code
  • issue_date - Issue date
  • description - Product name
  • quantity - Quantity
  • unit_price - Unit price

What This Design Achieves

For Operations

  • Minimize adoption cost: No need to learn new systems
  • Avoid migration risk: Maintain existing workflows
  • Flexible response: Freely customize spreadsheet columns

For Field Staff

  • Same old operations: Just enter data in the spreadsheet
  • Immediate result confirmation: Status appears on the spot
  • Easy error handling: Problematic rows are visible at a glance

Building on this design, we've also implemented:

Related Topics