> ## Documentation Index
> Fetch the complete documentation index at: https://hc.saas-manager.biz.nuro.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# 2-3. [Custom App] Connect SaaS via Google Sheets

> Steps to connect custom app accounts using Google Sheets (spreadsheet). In addition to manual or CSV import account creation, you can manage and sync SaaS accounts through Google Sheets.

These are the steps to connect SaaS accounts to a custom app using Google Sheets. In addition to the existing manual or CSV import methods, you can manage and sync SaaS accounts through Google Sheets.

## **How to Use**

| Prerequisites         | [Prepare Google Sheets and Your Data](#prepare-google-sheets-data)<br />[Share View/Edit Access](#share-permissions)                                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Connect Google Sheets | [Create a New Custom App and Connect Google Sheets](#create-new-custom-app)<br />[Connect Google Sheets to an Existing Custom App](#existing-custom-app)<br />[Re-connect Google Sheets](#re-connect-google-sheets) |
| Run a sync            | [Sync with Google Sheets](#sync-google-sheets)                                                                                                                                                                      |

<h2 id="prerequisites">
  **Prerequisites**
</h2>

Complete the following steps to prepare before connecting Google Sheets.

<h2 id="prepare-google-sheets-data">
  **Prepare Google Sheets and Your Data**
</h2>

First, format your Google Sheets spreadsheet.

| **Header row (required)**    | Set headers in **row 1** of the sheet. AI uses the headers for automatic column mapping. |
| ---------------------------- | ---------------------------------------------------------------------------------------- |
| **Any format accepted**      | Use data exported directly from your SaaS as-is. AI identifies fields from the headers.  |
| **Email address (required)** | Include a column for email addresses and fill in the email for each account.             |

<h2 id="share-permissions">
  **Share View/Edit Access**
</h2>

Add a dedicated service account as a shared member so the system can access your Google Sheets file.

1. In Google Sheets, click **File** in the top-left corner, then **Share** > **Share with others**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-06-22-57-12.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=f37e54fc6b4e3601ef5714c5b74abba3" alt="Google Sheets file share menu" width="1128" height="540" data-path="images/it-management/iwb7akg6zp/2026-02-06-22-57-12.png" />

2. Paste `prod-sheets-reader@money-forward-itmc.iam.gserviceaccount.com` in the **Add people and groups** field, then click **Send**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-06-23-00-48.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=8b0268f67be907ba533f1d9a912262a1" alt="Add user screen" width="932" height="850" data-path="images/it-management/iwb7akg6zp/2026-02-06-23-00-48.png" />

3. When prompted with "Share anyway?", click **Share anyway**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-06-23-01-50.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=5333e9f98bb93a9d70e3a582e693d66d" alt="Share confirmation dialog" width="942" height="812" data-path="images/it-management/iwb7akg6zp/2026-02-06-23-01-50.png" />

<h2 id="create-new-custom-app">
  **Create a New Custom App and Connect Google Sheets**
</h2>

1. Go to **Integrations** > **Integrations** and click **Register and manage a service without integration**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-17-52-37.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=f9d6624ef2256a9c47e2be3af8d73bc1" alt="Integrations screen" width="2590" height="416" data-path="images/it-management/iwb7akg6zp/2025-09-30-17-52-37.png" />

2. On the "Register and manage a service without integration" screen, fill in the following fields and click **Create**.

   | Service search | Search for and select a service, or enter any service name. |
   | -------------- | ----------------------------------------------------------- |
   | Workspace name | Enter any workspace name.                                   |
   | Data source    | Select **Google Sheets**.                                   |

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-17-55-50.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=1d27b4d76aac50cf6f9bb694cac72f28" alt="Service registration screen" width="750" height="1194" data-path="images/it-management/iwb7akg6zp/2025-09-30-17-55-50.png" />

3. On the "Specify Google Sheets file" screen, enter the **Google Sheets file URL** and click **Start integration**.

   Paste the URL of the Google Sheets file you prepared in the [prerequisites](#prerequisites).

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-23-36-35.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=35b4ff16801ac5e1076369154000a101" alt="Spreadsheet URL input screen" width="1380" height="404" data-path="images/it-management/iwb7akg6zp/2025-09-30-23-36-35.png" />

4. On the "Column mapping" screen, review the **Mapping destination** and **Data preview**, then click **Confirm and import data**.

   <Info>
     On the "Column mapping" screen, AI automatically sets the mapping destinations. Change them as needed.

     Available mapping destinations include Saas User Id, Display Name, Roles, Licenses, and Username. Additional destinations are Email, Status, Two FaLast, Activity, and Do not map. Set columns you do not want to import as **Do not map**.
   </Info>

   <img src="https://mintcdn.com/admina-sbn/WPHiBCfq57EV8M2N/images/it-management/iwb7akg6zp/2026-06-07-12-10-50.png?fit=max&auto=format&n=WPHiBCfq57EV8M2N&q=85&s=ccbfb3e135b3ea20e609bdc62629afd6" alt="Column mapping screen" width="1186" height="1318" data-path="images/it-management/iwb7akg6zp/2026-06-07-12-10-50.png" />

5. The "Connecting to file" screen appears.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-18-30-41.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=57cb3967a03ee7073249180d3fe9af1d" alt="Connecting to file screen" width="1606" height="512" data-path="images/it-management/iwb7akg6zp/2025-09-30-18-30-41.png" />

6. When the "Integration complete" screen appears, click **Done**.

   You can verify the connected custom app on the Services screen.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-10-47-15.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=365df8103489704224c4d0787e4bdfb8" alt="Integration complete screen" width="1378" height="360" data-path="images/it-management/iwb7akg6zp/2025-09-30-10-47-15.png" />

<h2 id="existing-custom-app">
  **Connect Google Sheets to an Existing Custom App**
</h2>

1. Go to **Services** > **Custom App** > **Info** and click **+ Create new integration**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-19-16-39-56.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=57a1a534059e79c95a9ff6f3c2f6aec1" alt="Info screen" width="2292" height="266" data-path="images/it-management/iwb7akg6zp/2025-09-19-16-39-56.png" />

2. Enter a workspace name, select **Google Sheets** as the data source, and click **Create**.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-19-13-48-42.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=d6bf29fe0351f3117e4ff5cdcafab975" alt="Data source selection screen" width="650" height="722" data-path="images/it-management/iwb7akg6zp/2025-09-19-13-48-42.png" />

3. On the "Specify Google Sheets file" screen, enter the **Google Sheets file URL** and click **Start integration**.

   Paste the URL of the Google Sheets file you prepared in the [prerequisites](#prerequisites).

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-23-36-35.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=35b4ff16801ac5e1076369154000a101" alt="Spreadsheet URL input screen" width="1380" height="404" data-path="images/it-management/iwb7akg6zp/2025-09-30-23-36-35.png" />

4. On the "Column mapping" screen, review the **Mapping destination** and **Data preview**, then click **Confirm and import data**.

   <Info>
     On the "Column mapping" screen, AI automatically sets the mapping destinations. Change them as needed.

     Available mapping destinations include Saas User Id, Display Name, Roles, Licenses, and Username. Additional destinations are Email, Status, Two FaLast, Activity, and Do not map. Set columns you do not want to import as **Do not map**.
   </Info>

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-19-43-25.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=423906b80ae14d37731070fcb65a242b" alt="Column mapping screen" width="1034" height="1144" data-path="images/it-management/iwb7akg6zp/2025-09-30-19-43-25.png" />

5. The "Connecting to file" screen appears.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-18-30-41.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=57cb3967a03ee7073249180d3fe9af1d" alt="Connecting to file screen" width="1606" height="512" data-path="images/it-management/iwb7akg6zp/2025-09-30-18-30-41.png" />

6. When the "Integration complete" screen appears, click **Done**.

   You can verify the connected custom app on the Services screen.

   <img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-30-10-47-15.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=365df8103489704224c4d0787e4bdfb8" alt="Integration complete screen" width="1378" height="360" data-path="images/it-management/iwb7akg6zp/2025-09-30-10-47-15.png" />

<h2 id="re-connect-google-sheets">
  **Re-connect Google Sheets**
</h2>

To change the column mapping, click the three-dot menu \[**︙**] on the right side of the workspace under **Info** > **Workspace**. Then select **Re-connect**.

After clicking **Re-connect**, follow step 3 onwards in [Create a New Custom App and Connect Google Sheets](#create-new-custom-app).

<img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2025-09-19-13-56-48.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=1ea8c4f11c02dbdedacef9f7ae2220fb" alt="Re-connect screen" width="2342" height="398" data-path="images/it-management/iwb7akg6zp/2025-09-19-13-56-48.png" />

<h2 id="sync-google-sheets">
  **Sync with Google Sheets**
</h2>

When you update your Google Sheets file, account information in the custom app updates through automatic or manual sync.

| Automatic sync | Account information updates during the nightly automatic sync.                                                    |
| -------------- | ----------------------------------------------------------------------------------------------------------------- |
| Manual sync    | For manual sync steps, see [Running a Sync](/en/it-management/saas-management/93nahw45is-trouble#running-a-sync). |

## **Delete a Workspace for a Registered Service**

1. Go to **Services** > **Service list** and click the custom app.

   Custom apps display as `(Custom)` under the left-side **Services/Workspace** item.

2. Under the service details **Info** tab, click the three-dot menu \[**︙**] at the right end of the workspace row. Then click **Delete**.

<img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-04-12-22-31-18.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=974d6c4c41ac638b9c7a92b1f0d0340e" alt="Workspace deletion screen" width="1786" height="362" data-path="images/it-management/iwb7akg6zp/2026-04-12-22-31-18.png" />

## **FAQ**

## **Q. Do I need any settings other than sharing under File > Share > Share with others in Google Sheets?**

A. Add [prod-sheets-reader@money-forward-itmc.iam.gserviceaccount.com](mailto:prod-sheets-reader@money-forward-itmc.iam.gserviceaccount.com) under "Share with others". No other settings are required.

There are no restrictions on the type of access (Editor/Viewer) or the file storage location (Shared Drive/My Drive).

## **Q. Is there a Google Sheets template available?**

A. There is no dedicated template, but you can use the template from [Bulk Account Registration](/en/it-management/saas-management/jbzpcipgo5-custome-app#account-bulk-registration). Any format works.

## **Q. Can I update accounts via API?**

A. API is not supported.

## **Q. I want to manage accounts in one Google Sheets file with multiple sheets. Is multi-sheet management supported?**

A. Yes. Each sheet has a different URL displayed in the browser. Paste the URL for each sheet to connect them individually.

## **Q. Can I register multiple licenses or roles in the custom app Google Sheets integration?**

A. Enter multiple values separated by commas (`,`) in the **licenses** and **roles** columns of your Google Sheets file. After saving, [sync with Google Sheets](/en/it-management/saas-management/iwb7akg6zp-saa-s-spreadsheet#sync-google-sheets) to confirm the multiple entries appear in the custom app.

Example: To register three licenses "L1, L2, L3" in the **licenses** column, enter `L1,L2,L3`.

To register two roles "R1, R2" in the **roles** column, enter `R1,R2`.

## **Q. Is there a way to import only rows that match specific conditions from Google Sheets?**

A. Use the Google Sheets **FILTER function** to extract only rows that match your criteria. This does not modify the source data.

Configure a formula based on the examples below to match the conditions you want to extract.

| Pattern                                                                        | Formula                                                                                                                                                                                    | Operator meaning | Notes                                                                     |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | ------------------------------------------------------------------------- |
| **Extract specific items only** (e.g., Active only)                            | `=FILTER(Sheet1!A:G, Sheet1!G:G = "Active")`                                                                                                                                               | = (equals)       | Shows rows where column G matches the specified value.                    |
| **Exclude specific items** (e.g., exclude Terminated)                          | `=FILTER(Sheet1!A:G, Sheet1!G:G <> "Terminated")`                                                                                                                                          | `<>` (not equal) | Shows rows where column G does not match the specified value.             |
| **Extract from another file** while keeping headers (e.g., exclude Terminated) | `={ IMPORTRANGE("source-data-URL", "Sheet1!A1:G1"); FILTER( IMPORTRANGE("source-data-URL", "Sheet1!A2:G"), INDEX(IMPORTRANGE("source-data-URL", "Sheet1!A2:G"), 0, 7) <> "Terminated" ) }` | `<>` (not equal) | Shows rows where column G is not "Terminated". Fixes row 1 as the header. |

Example: To automatically display only "Active" rows from source data on Sheet1 into Sheet2:

Set headers in **row 1** of Sheet2, then place the FILTER function in row 2, column A of Sheet2. This extracts the "Active" rows.

When [connecting](#create-new-custom-app), set the URL of Sheet2 in the **Google Sheets file URL** field.

<img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-07-8-25-21.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=2cfafef200d871e6764c72587ade31a7" alt="FILTER function example 1" width="1864" height="348" data-path="images/it-management/iwb7akg6zp/2026-02-07-8-25-21.png" />

Example: To automatically display rows excluding "Terminated" from source data on Sheet1 into Sheet2:

Place the FILTER function in row 1, column A of Sheet2 to extract all rows except "Terminated". (Headers are required.)

When [connecting](/en/it-management/saas-management/iwb7akg6zp-saa-s-spreadsheet#create-new-custom-app), set the URL of Sheet2 in the **Google Sheets file URL** field.

<img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-08-14-12-21.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=3d9b14c5eb24691638c7b039ed602627" alt="FILTER function example 2" width="1838" height="366" data-path="images/it-management/iwb7akg6zp/2026-02-08-14-12-21.png" />

Example: The source data lives in a separate management spreadsheet. Automatically display rows excluding "Terminated" into Sheet1 of the integration spreadsheet:

Place the function in row 1, column A of Sheet1 in the integration spreadsheet to extract all rows except "Terminated". (Headers are required.)

When [connecting](/en/it-management/saas-management/iwb7akg6zp-saa-s-spreadsheet#create-new-custom-app), set the URL of Sheet1 in the integration spreadsheet in the **Google Sheets file URL** field.

<img src="https://mintcdn.com/admina-sbn/kak0XcB2D9DYM1HQ/images/it-management/iwb7akg6zp/2026-02-10-6-57-32.png?fit=max&auto=format&n=kak0XcB2D9DYM1HQ&q=85&s=ab2a4e94f1f7bc1c9542ea57ff046093" alt="FILTER function example 3" width="1838" height="422" data-path="images/it-management/iwb7akg6zp/2026-02-10-6-57-32.png" />
