> For the complete documentation index, see [llms.txt](https://guide.plumber.gov.sg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.plumber.gov.sg/user-guides/actions/m365-excel-.gov.sg-agencies-only.md).

# M365 Excel (.gov.sg Agencies only)

## What is M365 Excel?

M365 Excel is a spreadsheet program used to organize, format, and analyse data using tables, calculations, formulas and graphs. It's part of the Microsoft Office suite and is widely used for tasks like data entry, accounting, financial analysis, and more.&#x20;

## What to take note?

{% hint style="danger" %}
**Please make sure to read through this entire document as there may be restrictions that could affect your operations.**
{% endhint %}

* **Storage is shared across all Plumber users**, so please use this action with care. Old version history is cleared after 90 days of inactivity, but this only clears version history, not the file itself. Your Excel file and its current data are never deleted, no matter how long it goes untouched, so if a pipe is only used once a year (e.g. an annual event), the file will still be there and the pipe will still work.
* **Your file needs a sensitivity label of Restricted or Sensitive-Normal or lower.** Files with no label, or a higher label (e.g. Sensitive-High), can't be used with the M365 Excel action.
* **Executions are queued to keep things fair.** If many executions are running on the same file, your changes may take a bit longer to go through.
* **We may pause your pipe from using Excel if it:**
  * runs a large number of actions in a short time, or
  * stores large files in your Plumber folder.
* **Need more than this?** If you need large files (over 500MB) or more than 100 Excel actions per 10 minutes, contact us at[ go.gov.sg/plumber-support ](https://go.gov.sg/plumber-support)so we can help you avoid disruption.

## Setting up M365 Excel connection (one-time)

{% hint style="info" %}
M365 Excel is only available for agencies that can access the SG Govt SharePoint. Or, you may try to access this [link](https://gccprod-my.sharepoint.com) on your GSIB, if you're able to access, it means you'll be able to access the integration on Plumber.\
\
If your agency can access this SharePoint, but you are unable to see this app in Plumber, please contact us at <https://go.gov.sg/plumber-support>
{% endhint %}

To get started, you need to perform a one-time configuration to connect your Plumber account to M365. This will create a shared folder, known as your "Plumber folder," where you can place Excel files for Plumber to access.

Follow the steps below to set up the configuration.

### Part 1: Configure on Plumber

1. Select "Add step" in the pipe editor

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FTb8M5TVawsZ5woVj16Xw%2Fimage.png?alt=media&amp;token=c8018815-d567-450a-86f8-18522cc050ef" alt=""><figcaption></figcaption></figure>

2. Select “M365 Excel” action

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2F99fHhbj6Z0wXUlYsaAYr%2Fimage.png?alt=media&amp;token=fceef76a-b194-4171-8fc5-e1ff5ffeabd7" alt=""><figcaption></figcaption></figure>

3. Then select the “Create table row” action (or any action you require)

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FMD2ylU47JiLV4Yw3kMWb%2Fimage.png?alt=media&amp;token=89600bf1-c5ac-4984-8c3b-146ba7ab8de8" alt=""><figcaption></figcaption></figure>

4. Click on "Connect" and we will create a folder for you to use on the SharePoint site

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2F5mwSI90cxHzIvYnN9tpO%2Fimage.png?alt=media&amp;token=b5d6cdec-25f9-40b8-928d-46a0c5ea0770" alt=""><figcaption></figcaption></figure>

5. Click on "Ok, got it!" and the connection is completed. You can now perform M365 excel actions on Plumber!

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2F1TTeNi2XTIuHeDeqxDFg%2Fimage.png?alt=media&amp;token=157aaec8-87a9-4457-91ef-2d8702780808" alt=""><figcaption></figcaption></figure>

### Part 2: Start creating or moving Excel files into your Plumber folder on the SharePoint site

1. Go to your OneDrive on the SG Govt SharePoint, and click on the “Shared” link

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FfsswANEmvQqKpH91Zs4p%2Fimage.png?alt=media&amp;token=564cc4ed-fd50-4cb9-b6ad-8d18f7949ad1" alt="" width="563"><figcaption></figcaption></figure>

2. You will see a new folder named with your email. The subtitle of that folder will be *Plumber (OGP)*. Any Excel files placed in this folder can be processed in a plumber pipe. **We recommend that you star this folder for easy access.**

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FXy6Zwzu4bDhRnRzQFXFc%2Fimage.png?alt=media&amp;token=4321e9fa-5052-483f-8830-7a64243c23d5" alt="" width="563"><figcaption></figcaption></figure>

3. You can create a new excel file via the “Add New” button, or move an existing excel file to this folder.

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FysGGm6E9vh2MmF5lQVfn%2Fimage.png?alt=media&amp;token=5429a910-5bde-41ff-8c06-df259cf51c2f" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="danger" %}
***CAUTION***: If you want to move files into this folder, make sure that “Keep sharing with the same people” is selected! Otherwise, existing users will lose access to that file!
{% endhint %}

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FCY74IBAPQDJV36Xaw1QR%2Fimage.png?alt=media&amp;token=80313a5d-4079-4e5a-a5cc-3c910ad56431" alt="" width="563"><figcaption></figcaption></figure>

## Available Actions

{% hint style="info" %}
Plumber does not automatically refresh changes to your excel file. If you make changes (*e.g. creating a new table / renaming a column*), you need to manually trigger a data refresh. To do this:

1. After editing your excel file, please wait 1-2 minutes for Microsoft servers to sync. Or you can refresh your excel file.
2. Navigate to your Plumber pipe and expand the appropriate drop down menu (*e.g. if you added a new table, expand the “Table” menu*)
3. Click on the “*Refresh Items*” button at the bottom of the menu.
   {% endhint %}

* [Create table row](#create-table-row)
* [Find table row](#find-table-row)
* [Update table row](#update-table-row)
* [Find multiple table rows](#find-multiple-table-rows)

> **You’ll need a table to use any of the actions** Please refer to Microsoft’s video [here](https://support.microsoft.com/en-us/office/create-and-format-tables-e81aa349-b006-4f8a-9806-5af9df0ac664) for instructions on creating a table.

## Create Table Row

This action allows you to add rows to an Excel [table](https://support.microsoft.com/en-us/office/overview-of-excel-tables-7ab0bb7d-3a9e-4b56-a3c9-6c94334e492c).

| Field        | Description                                                                                                                      | Required?            |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| Excel File   | Sets the Excel file where your Table will reside in.                                                                             | :heavy\_check\_mark: |
| Table        | <p>This field will only appear after you select an Excel file.</p><p></p><p>Set the Excel table you want to create a row to.</p> | :heavy\_check\_mark: |
| New row data | These are the columns and the respective values you want to add when you create a row                                            | :heavy\_check\_mark: |

* Set up your Excel step by completing the required fields:
  1. **Excel File**
  2. **Table**
  3. **New row data**
* Click on **Check step** to save and create an Excel row in your table in the Excel file selected based on the row data you have set up.

{% hint style="danger" %}
Please do NOT edit the excel table unless you un-publish your pipe first! Editing the table while the pipe is running will result in data corruption!
{% endhint %}

## Find Table Row

This action allows you to find a single table row by looking up a column value.

{% hint style="info" %}
*Find Table Row* only supports tables that are smaller than **50,000** rows or **100,000** cells.

It will also use the **first** table row whose lookup column matches the lookup value.
{% endhint %}

| Field         | Description                                                                                                                              | Required?            |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| Excel File    | Sets the Excel file where your Table will reside in.                                                                                     | :heavy\_check\_mark: |
| Table         | <p>This field will only appear after you select an Excel file.</p><p></p><p>Set the Excel table you want to find a row in.</p>           | :heavy\_check\_mark: |
| Lookup column | This is the column you will select to match with your lookup value to find the topmost row that matches.                                 | :heavy\_check\_mark: |
| Lookup value  | <p>This is the value you input for matching with the lookup column.<br><br>If this is left empty, it will search for an empty value.</p> |                      |

* Set up your Excel step by completing the required fields:
  1. **Excel File**
  2. **Table**
  3. **Lookup column**
* Click on **Check step** to save and find an Excel row in your table in the Excel file selected based on the lookup column and value you have set up.

## Update Table Row

This action allows you to update a single table row whose column matches a lookup value

{% hint style="info" %}
*Update Table Row* only supports tables that are smaller than **50,000** rows or **100,000** cells.

It will also update the **first** table row whose lookup column matches the lookup value.
{% endhint %}

| Field         | Description                                                                                                                              | Required?            |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| Excel File    | Sets the Excel file where your Table will reside in.                                                                                     | :heavy\_check\_mark: |
| Table         | <p>This field will only appear after you select an Excel file.</p><p></p><p>Set the Excel table you want to update a row in.</p>         | :heavy\_check\_mark: |
| Lookup column | This is the column you will select to match with your lookup value to find the topmost row that matches.                                 | :heavy\_check\_mark: |
| Lookup value  | <p>This is the value you input for matching with the lookup column.<br><br>If this is left empty, it will search for an empty value.</p> |                      |
| Row data      | These are the columns and the respective values you want to overwrite and update the found row with                                      | :heavy\_check\_mark: |

* Set up your Excel step by completing the required fields:
  1. **Excel File**
  2. **Table**
  3. **Lookup column**
  4. **Row data**
* Click on **Check step** to save and update an Excel row in your table in the Excel file selected based on the lookup column and value you have set up.

## Find Multiple Table Rows <a href="#find-multiple-table-rows" id="find-multiple-table-rows"></a>

This action allows you to find multiple table rows that match one or more lookup conditions.

*Find Multiple Table Rows* only supports tables that are smaller than **50,000** rows or **100,000** cells.

**Returns up to 500 matching rows per execution.** This is a return limit, not a read limit, your full worksheet stays untouched and accessible, only the action's output per execution is capped at 500 rows. If a lookup condition matches more than 500 rows, only the first 500 come through in that run, split into multiple lookup conditions or batches if you need the rest.

**Leaving Lookup value blank searches for empty cells, it does not return every row.** To match every row regardless of content, add a helper column with the same value in every row (e.g. a column named "Include" with "Yes" in every row) and use that as the lookup condition instead.

Lookup values are case sensitive and should exclude units or symbols (e.g. enter "5.2", not "$5.20").

| Field             | Description                                                                                                                                                                | Required? |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |
| Excel File        | Sets the Excel file where your Table will reside in.                                                                                                                       | ✔️        |
| Table             | This field will only appear after you select an Excel file. Set the Excel table you want to find rows in.                                                                  | ✔️        |
| Lookup conditions | Select a Lookup column and Lookup value to match. Click "+ And" to add more conditions, each condition must use a different column, there's no OR logic within one column. | ✔️        |

Set up your Excel step by completing the required fields (Excel File, Table, Lookup conditions), then click **Check step** to save and find matching Excel rows based on the lookup conditions you've set up.

## List of agencies allowed for M365 integration&#x20;

*This list was last updated on 15 Sept 2026.*

If you're user with the email domains "x.gov.sg" and you're not able to access M365 app, please raise a ticket with us at <https://go.gov.sg/plumber-support>

| Approved government email domains | Disallowed government/org email domains |
| --------------------------------- | --------------------------------------- |
| @tech.gov.sg                      | @schools.gov.sg                         |
| @sport.gov.sg                     | @defence.gov.sg                         |
| @mom.gov.sg                       | All .edu.sg (except @science.edu.sg)    |
| @nlb.gov.sg                       | All healthcare institutions             |
| @mnd.gov.sg                       |                                         |
| @singstat.gov.sg                  |                                         |
| @wsg.gov.sg                       |                                         |
| @bca.gov.sg                       |                                         |
| @spf.gov.sg                       |                                         |
| @thedigitalacademy.tech.gov.sg    |                                         |
| @mas.gov.sg                       |                                         |
| @nea.gov.sg                       |                                         |
| @hdb.gov.sg                       |                                         |
| @moh.gov.sg                       |                                         |
| @mlaw\.gov.sg                     |                                         |
| @judiciary.gov.sg                 |                                         |
| @nyc.gov.sg                       |                                         |
| @moe.gov.sg                       |                                         |
| @pub.gov.sg                       |                                         |
| @customs.gov.sg                   |                                         |
| @iras.gov.sg                      |                                         |
| @msf.gov.sg                       |                                         |
| @htx.gov.sg                       |                                         |
| @scdf.gov.sg                      |                                         |
| @mci.gov.sg                       |                                         |
| @mha.gov.sg                       |                                         |
| @stb.gov.sg                       |                                         |
| @jtc.gov.sg                       |                                         |
| @lta.gov.sg                       |                                         |
| @vital.gov.sg                     |                                         |
| @pris.gov.sg                      |                                         |
| @caas.gov.sg                      |                                         |
| @hsa.gov.sg                       |                                         |
| @gra.gov.sg                       |                                         |
| @ssg.gov.sg                       |                                         |
| @ica.gov.sg                       |                                         |
| @pa.gov.sg                        |                                         |
| @acra.gov.sg                      |                                         |
| @mfa.gov.sg                       |                                         |
| @cpf.gov.sg                       |                                         |
| @pmo.gov.sg                       |                                         |
| @toteboard.gov.sg                 |                                         |
| @csa.gov.sg                       |                                         |
| @hpb.gov.sg                       |                                         |
| @mddi.gov.sg                      |                                         |
| @mindef.gov.sg                    |                                         |
| @psd.gov.sg                       |                                         |
| @nparks.gov.sg                    |                                         |
| @mpa.gov.sg                       |                                         |
| @enterprisesg.gov.sg              |                                         |
| @mti.gov.sg                       |                                         |
| @sfa.gov.sg                       |                                         |
| @muis.gov.sg                      |                                         |
| @ncss.gov.sg                      |                                         |
| @hta.gov.sg                       |                                         |
| @imda.gov.sg                      |                                         |
| @mccy.gov.sg                      |                                         |
| @edb.gov.sg                       |                                         |
| @cscollege.gov.sg                 |                                         |
| @nac.gov.sg                       |                                         |
| @ura.gov.sg                       |                                         |
| @agc.gov.sg                       |                                         |
| @agd.gov.sg                       |                                         |
| @cnb.gov.sg                       |                                         |
| @yellowribbon.gov.sg              |                                         |
| @mof.gov.sg                       |                                         |
| @cda.gov.sg                       |                                         |
| @seab.gov.sg                      |                                         |
| @ptc.gov.sg                       |                                         |
| @gt.tech.gov.sg                   |                                         |
| @sentosa.gov.sg                   |                                         |
| @nrf.gov.sg                       |                                         |
| @science.edu.sg                   |                                         |
| @vendor.gov.sg                    |                                         |
| @ssg-wsg.gov.sg                   |                                         |
| @ccs.gov.sg                       |                                         |
| @parl.gov.sg                      |                                         |
| @mse.gov.sg                       |                                         |
| @swda.gov.sg                      |                                         |
| @nhb.gov.sg                       |                                         |
| @osc.gov.sg                       |                                         |
| @support.gov.sg                   |                                         |
| @ema.gov.sg                       |                                         |

## Common Errors

<details>

<summary>Table too large (for find and update table row actions)</summary>

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2FizriCNdGNBF9smeWUuWU%2Fimage.png?alt=media&amp;token=61b076d4-e71d-47ad-8111-8b0bd1b8ecb2" alt=""><figcaption></figcaption></figure>

This happens when your table has more than 50k rows, please reduce the number of rows before running the execution again.

</details>

<details>

<summary>Invalid column in Excel table (for any action)</summary>

<figure><img src="https://2212031742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXyVsBiX9OwOL1o9g5hLM%2Fuploads%2Fxvf8tsiBXAN0pbH4U5fM%2Fimage.png?alt=media&amp;token=7f685e56-981b-42bb-9b25-5e57740b606e" alt=""><figcaption></figcaption></figure>

The column is most likely deleted from your table, please reselect the correct column before running the execution again.

</details>

<details>

<summary>One or more users could not be resolved</summary>

This error usually means the Excel file or SharePoint folder was connected using a group or shared email account (e.g. `team@agency.gov.sg`).

M365 Excel requires an individual `.gov.sg` account to connect. Group emails don't have the same OneDrive and SharePoint permissions that Plumber needs.

**To fix this:**\
Reconnect M365 Excel using your personal `.gov.sg` email account, then move your Excel file into the new Plumber folder created under that account.

</details>

<details>

<summary>Sensitivity label is removed after file upload</summary>

If your Excel file had a sensitivity label applied locally, it may be stripped when uploaded to SharePoint via Plumber.

This is a known behaviour with M365 APIs. The label is not carried over automatically during file operations.

**To fix this:**\
Apply the sensitivity label directly in SharePoint after the file is uploaded, rather than relying on the local label. You can also configure a default sensitivity label at the SharePoint library level so it applies automatically to all files in your Plumber folder.

</details>

<details>

<summary>403 forbidden</summary>

You are most likely attempting to perform actions on a protected sheet.

Remove the protection and try again.

</details>

<details>

<summary>504 gateway timeout error</summary>

You most likely have a long-running formula in your excel sheet, please set your formulas to `manual` instead of `automatic` to prevent issues with creating a table row.&#x20;

Follow these steps: click on `Formulas` -> `Calculation Options`-> `Manual`

</details>

<details>

<summary>409 insert delete conflict</summary>

Your table may be too large or contains too many empty rows.

Check that you did not accidentally create too many rows.

To fix this:

1. Create a new Excel table from scratch.
2. Copy and paste only the rows that contain actual data.
3. Make sure there are no unnecessary blank rows in the table.
4. Save the file and try running your Pipe again.

</details>

<details>

<summary>Your file needs a sensitivity label.</summary>

Your file has no sensitivity label applied, or a label that was applied locally was stripped when the file was uploaded to SharePoint (a known M365 API behaviour, see the entry above). Apply the label directly in SharePoint after upload, rather than relying on a label applied locally before upload. You can also set a default sensitivity label at the SharePoint library level so it's applied automatically.

</details>

<details>

<summary>File sensitivity should be up to Restricted and Sensitive-Normal.</summary>

Your file's sensitivity label is set higher than what M365 Excel supports (e.g. Sensitive-High). Only Restricted and Sensitive-Normal labels (or lower) are supported for this integration. Apply a lower label, or use a different action (e.g. Tiles) for files requiring higher sensitivity.

</details>

## FAQ

<details>

<summary>Why are only ".gov.sg" email domains given access to M365?</summary>

This restriction is in place because the ".gov.sg" email domains share the same system on SG SharePoint, which is the only system integrated with the product. The other domains reside on a separate SharePoint system to which the product does not have access.

</details>

<details>

<summary>What is the meaning of disallowed email domains?</summary>

Users will not be able to use the M365 excel integration on Plumber. The reason is because the users are not able to access SG sharepoint.

</details>

<details>

<summary>Can I keep my Excel file open while the data pipe runs?</summary>

No, you need to close the Excel file before running the pipe. The pipeline requires exclusive access to read/write the file. Once closed, the pipe will run successfully.

If the file is left open while the pipe runs, the step can fail intermittently with a 404 error (code: ResourceNotFound, message: "Invalid version: error"). If you see this error, check whether the file was open in Excel Desktop or Excel Online at the time.

</details>

<details>

<summary>Why does the date from Excel display as numbers on Plumber?</summary>

Excel stores dates internally as serial numbers (days since January 1, 1900). When Excel doesn't recognise your input as a proper date format, it may display these serial numbers instead of formatted dates.

**To fix this:**

In your Excel column, add a formula to convert the serial number to a readable date:\
`=TEXT(G2,"dd mmm yyyy")`

Apply this to the entire column. This forces Excel to store the date as text in a consistent format that Plumber can read correctly.

</details>

<details>

<summary>Will the team work towards opening M365 to everyone?</summary>

There are multiple systems across Singapore Government and healthcare settings. We aim to make these available to as many users as possible, so please bear with us while we work behind the scenes.&#x20;

</details>

<details>

<summary>Why does my response take a while to appear in M365 excel?</summary>

We have implemented a queuing system to ensure fairness. If there are many automations using M365 running at the same time, your request may not execute immediately. Please allow around half an hour for your response to show up. The response ultimately resides on FormSG. Alternatively, you may also set up Tiles in your action.

</details>

<details>

<summary>Can I use macros along with this integration?</summary>

No, it is not possible to use macros with this integration. Plumber will not be able to detect the excel sheet if it's macros-enabled.

</details>

<details>

<summary>How do I know if I am able to access M365 integration on Plumber?</summary>

You can try to access the  <https://gccprod-my.sharepoint.com> with your GSIB/Comet.&#x20;

If you are able to access it, you should be able to use the integration on Plumber.

</details>

<details>

<summary>How do I connect to my Plumber Excel file using Power Automate?</summary>

Power Automate has two versions, Desktop and Cloud, and only Cloud can connect to your Plumber Excel folder, Desktop cannot. In Power Automate Cloud, when setting up your SharePoint connection, enter this as the Site URL rather than browsing for the folder:\
`https://gccprod.sharepoint.com/sites/GOVTECH-Plumber`

</details>

<details>

<summary>I cannot find my Plumber folder on SharePoint. What should I do?</summary>

1. Open SharePoint: [https://gccprod.sharepoint.com/sites/GOVTECH-plumber/Shared Documents](https://gccprod.sharepoint.com/sites/GOVTECH-plumber/Shared%20Documents)
2. Click on 'Shared'
3. Click on the Folder icon to filter by folders

</details>

<details>

<summary>Why can't I see my Excel table on Plumber?</summary>

Please ensure you have set up a table in Excel. For more information, view the Microsoft guide [here](https://support.microsoft.com/en-us/office/create-and-format-tables-e81aa349-b006-4f8a-9806-5af9df0ac664).

</details>

<details>

<summary>Why am I unable to access Excel actions with group emails?</summary>

Unfortunately, Excel actions are not supported for group emails due to system limitations. Excel actions require individual email addresses because group emails operate with different permission settings.

</details>
