Merge branch 'main' into DOC-442-contrib-blog
|
Before Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 14 KiB |
@ -1,205 +1,112 @@
|
||||
# Google Sheets
|
||||
|
||||
[Google Sheets](https://www.google.com/sheets) is a web-based spreadsheet program that is part of Google's office software suite within its Google Drive service.
|
||||
[Google Sheets](https://www.google.com/sheets){:target=_blank} is a web-based spreadsheet program that's part of Google's office software suite within its Google Drive service.
|
||||
|
||||
!!! note "Credentials"
|
||||
You can find authentication information for this node [here](/integrations/builtin/credentials/google/).
|
||||
|
||||
|
||||
## Basic Operations
|
||||
## Operations
|
||||
|
||||
* Spreadsheet
|
||||
* Create a spreadsheet
|
||||
* Sheet
|
||||
* Append data to a sheet
|
||||
* Clear data from a sheet
|
||||
* Create a new sheet
|
||||
* Delete columns and rows from a sheet
|
||||
* Look up a specific column value and return the matching row
|
||||
* Read data from a sheet
|
||||
* Remove a sheet
|
||||
* Update rows in a sheet
|
||||
* Document
|
||||
* Create
|
||||
* Delete
|
||||
* Sheet within document
|
||||
* Append: append data to a sheet
|
||||
* Append or update: append a new row, or update the current one if it already exists.
|
||||
* Clear: clear all data from a sheet
|
||||
* Create: create a new sheet
|
||||
* Delete: delete columns and rows from a sheet
|
||||
* Read rows: read all rows in a sheet.
|
||||
* Remove: remove a sheet
|
||||
* Update: update rows in a sheet
|
||||
|
||||
## Example Usage
|
||||
## Related resources
|
||||
|
||||
This workflow allows you to append, lookup, update, and read data from Google Sheets. You can also find the [workflow](https://n8n.io/workflows/694) on n8n.io. This example usage workflow uses the following nodes.
|
||||
- [Start](/integrations/builtin/core-nodes/n8n-nodes-base.start/)
|
||||
- [Set](/integrations/builtin/core-nodes/n8n-nodes-base.set/)
|
||||
- [Google Sheets]()
|
||||
Refer to [Google Sheet's API documentation](https://developers.google.com/sheets/api){:target=_blank .external-link} for more information about the service.
|
||||
|
||||
The final workflow should look like the following image.
|
||||
View [example workflows and related content](https://n8n.io/integrations/google-sheets/){:target=_blank .external-link} on n8n's website.
|
||||
|
||||

|
||||
## Update operations
|
||||
|
||||
### 1. Start node
|
||||
To update data in a sheet:
|
||||
|
||||
The Start node exists by default when you create a new workflow.
|
||||
1. Select your **Authentication** method and credential. Refer to [Google credentials](/integrations/builtin/credentials/google/) for more information.
|
||||
2. In **Resource**, select **Sheet Within Document**.
|
||||
3. In **Operation**, select one of the append operations.
|
||||
4. Choose the **Document** and **Sheet** you want to edit.
|
||||
5. Choose your **Data Mode**:
|
||||
* **Auto-Map Input Data to Columns**: use this when the table column names (or JSON parameter names) in the node input view match the column names in your spreadsheet. In **Column to Match On**, select the column name in Google Sheets that you want to map to.
|
||||
* **Map Each Column Below**: use this when the column names and data structure in your node input data doesn't match the names and structure in Google Sheets.
|
||||
1. In **Column to Match On**, select or enter the column name in Google Sheets.
|
||||
2. In **Value of Column to Match On**, drag in the table column (or JSON parameter) whose value you want to search for.
|
||||
3. In **Values to Send** select **Add Field**.
|
||||
4. Enter a **Column** from your Google Sheet, and the value from the node input data you want to add to that column in **Value**.
|
||||
|
||||
??? Details "View example and screenshots"
|
||||
This example uses the Customer Datastore node to provide sample data to load into Google Sheets. It assumes you've already set up your [credentials](/integrations/builtin/credentials/google/).
|
||||
|
||||
1. Set up a Google Sheet with two columns, `test1` and `test`. In `test1`, enter the names from the Customer Datastore node:
|
||||

|
||||
2. Create the workflow: use the manual trigger, Customer Datastore, and Google Sheets nodes.
|
||||

|
||||
3. Open the Customer Datastore node, enable **Return All**, then select **Execute node**.
|
||||
4. In the Google Sheets node, go through the steps above, using these settings:
|
||||
* Select **Update** as the **Operation**.
|
||||
* In **Column to Match On**, select `test1`.
|
||||
* For **Value of Column to Match On**, drag in the **name** column from the input view.
|
||||
* Then set up your **Values to Send**: enter `test2` in **Column**, and drag the **email** column from the input view into **Value**.
|
||||
5. Select **Execute node**.
|
||||
6. View your spreadsheet. **test2** should now contain the email addresses that match to the names in the input data.
|
||||

|
||||
|
||||
* **Nothing**: don't map any data.
|
||||
|
||||
|
||||
### 2. Set node
|
||||
|
||||
This example workflow uses the Set node to generate data that we want to add to Google Sheets. You can also use other nodes, for example, the [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) node, to get the data you want to add to the Google Sheets.
|
||||
|
||||
1. Click on the ***Add Value*** button and select 'String' from the dropdown list.
|
||||
2. Enter `Name` in the ***Name*** field.
|
||||
3. Enter the name for a house in the ***Value*** field.
|
||||
4. Click on the ***Add Value*** button and select 'String' from the dropdown list.
|
||||
5. Enter `Rent` in the ***Name*** field.
|
||||
6. Enter the rent of the house along with the currency in the ***Value*** field. For example, `$1000`.
|
||||
7. Click on the ***Add Value*** button and select 'String' from the dropdown list.
|
||||
8. Enter `City` in the ***Name*** field.
|
||||
9. Enter the name of the city in the ***Value*** field.
|
||||
10. Click on the ***Add Value*** button and select 'Number' from the dropdown list.
|
||||
11. Enter `ID` in the ***Name*** field.
|
||||
12. Click on the gears icon next to the ***Value*** field and click on ***Add Expression***.
|
||||
13. Paste the following expression: `{{Math.floor(Math.random()*1000)}}`. This expression will generate a three-digit random number.
|
||||
14. Click on ***Execute Node*** to run the node.
|
||||
|
||||
|
||||
In the screenshot below, you will notice that the Set node has created data that will be passed to the next nodes in the workflow. Also, the output shows a random three-digit number as the ID, created by the expression.
|
||||
|
||||

|
||||
|
||||
|
||||
### 3. Google Sheets node (Append)
|
||||
|
||||
#### Creating a Google Sheets spreadsheet
|
||||
|
||||
1. Create a new [Google Sheets](https://sheet.new) spreadsheet.
|
||||
2. In your spreadsheet, enter `ID`, `Name`, `Rent`, and `City` in the cells A1, B1, C1, and D1, respectively.
|
||||
3. Copy the string of characters located between `/d/` and `/edit` in your spreadsheet URL. This string is the Spreadsheet ID, which we will use in the Google Sheets node.
|
||||
|
||||
#### Configure the Google Sheets node
|
||||
|
||||
This Google Sheets node will add the data from the Set node in a new row to the Google Sheets that we will specify using the Spreadsheet ID.
|
||||
|
||||
1. Select 'OAuth2' from the ***Authentication*** dropdown list.
|
||||
2. First of all, you'll have to enter credentials for the Google Sheets node. You can find out how to enter credentials for this node [here](/integrations/builtin/credentials/google/).
|
||||
3. Select 'Append' from the ***Operation*** dropdown list.
|
||||
4. Paste the Spreadsheet ID you copied in the previous step, in the ***Spreadsheet ID*** field.
|
||||
5. In the ***Range*** field, enter the range of columns to append the data to your spreadsheet. Make sure that your range includes enough columns for all the data in the Set node. For this workflow, enter `A:D` in the ***Range*** field.
|
||||
6. Click on the ***Add Option*** button and select 'Value Input Mode' from the dropdown list.
|
||||
7. Select 'User Entered' from the ***Value Input Mode*** dropdown list. Refer to the [FAQs](#how-to-enter-values-with-a-proper-format) for more information on why we used this option.
|
||||
8. Click on ***Execute Node*** to run the workflow.
|
||||
|
||||
In the screenshot below, you will observe that the node adds the data from the Set node to the Google Sheets. You will also notice that the values get added in the format they are set.
|
||||
|
||||

|
||||
|
||||
### 4. Google Sheets1 node (Lookup)
|
||||
|
||||
This node will return the entries from the Google Sheets that have `Berlin` as the City. Feel free to change the city name to something else but make sure you have at least one record with the city name you look for in your Google Sheets spreadsheet.
|
||||
|
||||
1. Select 'OAuth2' from the ***Authentication*** dropdown list.
|
||||
2. Select the credentials that you entered in the previous Google Sheets node.
|
||||
3. Select 'Lookup' from the ***Operation*** dropdown list.
|
||||
4. In the ***Spreadsheet ID*** field, enter the same string used in the previous Google Sheets node.
|
||||
5. Enter `City` in the ***Lookup Column*** field.
|
||||
6. Enter `Berlin` in the ***Lookup Value*** field.
|
||||
7. Click on the ***Add Option*** button and select 'Return All Matches' from the dropdown list.
|
||||
8. Toggle ***Return All Matches*** to true. This option returns all the entries that contain `Berlin` as the City. Refer to the [FAQs](#how-to-return-all-the-values-with-the-lookup-operation) for more information.
|
||||
9. Click on the ***Add Option*** button and select 'Value Render Mode' from the dropdown list. This option determines how the values should render in the output. The 'Unformatted Value' option returns the data without formatting it. Refer to the [FAQs](#what-are-the-various-formats-to-read-the-data-from-the-google-sheets) for more information on why we used this option.
|
||||
10. Click on ***Execute Node*** to run the workflow.
|
||||
|
||||
In the screenshot below, you will notice that the node returns all the entries that contain Berlin as the City. The output is unformatted and is passed on to the next nodes in the workflow.
|
||||
|
||||

|
||||
|
||||
|
||||
### 5. Set1 node
|
||||
|
||||
We will use expressions to get the data from the previous node and increase the rent by $100 for the houses in Berlin.
|
||||
|
||||
1. Click on the ***Add Value*** button and select 'String' from the dropdown list.
|
||||
2. Enter `Name` in the ***Name*** field.
|
||||
3. Click on the gears icon next to the ***Value*** field click on ***Add Expression***.
|
||||
4. Select the following in the ***Variable Selector*** section: Nodes > Google Sheets1 > Output Data > JSON > Name. You can also add the following expression: `{{$node["Google Sheets1"].json["Name"]}}`.
|
||||
5. Click on the ***Add Value*** button and select 'String' from the dropdown list.
|
||||
6. Enter `City` in the ***Name*** field.
|
||||
7. Click on the gears icon next to the ***Value*** field click on ***Add Expression***.
|
||||
8. Select the following in the ***Variable Selector*** section: Nodes > Google Sheets1 > Output Data > JSON > City. You can also add the following expression: `{{$node["Google Sheets1"].json["City"]}}`.
|
||||
9. Click on the ***Add Value*** button and select 'Number' from the dropdown list.
|
||||
10. Click on the gears icon next to the ***Value*** field click on ***Add Expression***.
|
||||
11. Paste the following expression: `{{$node["Google Sheets1"].json["Rent"]+100}}`. This expression will increase the rent by $100.
|
||||
12. Click on the ***Add Value*** button and select 'Number' from the dropdown list.
|
||||
13. Enter `ID` in the ***Name*** field.
|
||||
14. Click on the gears icon next to the ***Value*** field click on ***Add Expression***.
|
||||
15. Select the following in the ***Variable Selector*** section: Nodes > Google Sheets1 > Output Data > JSON > ID. You can also add the following expression: `{{$node["Google Sheets1"].json["ID"]}}`.
|
||||
16. Click on ***Execute Node*** to run the node.
|
||||
|
||||
|
||||
In the screenshot below, you will notice that the node uses an expression to get the data from the previous node and increases the rent of the houses by $100. This new data will be passed to the next nodes in the workflow.
|
||||
|
||||

|
||||
|
||||
### 6. Google Sheets2 node (Update)
|
||||
|
||||
This node will update the rent for the houses in Berlin with the new rent set in the previous node.
|
||||
|
||||
1. Select 'OAuth2' in the ***Authentication*** field.
|
||||
2. Select the credentials that you entered in the previous Google Sheets node.
|
||||
3. Select 'Update' from the ***Operation*** dropdown list.
|
||||
4. In the ***Spreadsheet ID*** field, enter the same string used in the previous Google Sheets node.
|
||||
5. In the ***Range*** field, enter the same range used in the previous Google Sheets node.
|
||||
6. Enter `ID` in the ***Key*** field.
|
||||
7. Click on the ***Add Option*** button and select 'Value Input Mode' from the dropdown list.
|
||||
8. Select 'User Entered' from the ***Value Input Mode*** dropdown list. Refer to the [FAQs](#how-to-enter-values-with-a-proper-format) for more information on why we used this option.
|
||||
9. Click on ***Execute Node*** to run the workflow.
|
||||
|
||||
In the screenshot below, you will notice that this node updates the rent values of the houses in Berlin based on the ID in the Google Sheets. You will also see that the updated values are in the correct format.
|
||||
|
||||

|
||||
|
||||
### 7. Google Sheets3 node (Read)
|
||||
|
||||
This node will read the data from Google Sheets.
|
||||
|
||||
1. Select 'OAuth2' in the ***Authentication*** field.
|
||||
2. Select the credentials that you entered in the previous Google Sheets node.
|
||||
3. Select 'Read' from the ***Operation*** dropdown list.
|
||||
4. In the ***Spreadsheet ID*** field, enter the same string used in the previous Google Sheets node.
|
||||
5. In the ***Range*** field, enter the same range used in the previous Google Sheets node.
|
||||
6. Click on the ***Add Option*** button and select 'Value Render Mode' from the dropdown list.
|
||||
7. Select 'Formatted Value' from the ***Value Render Mode*** dropdown list. Refer to the [FAQs](#what-are-the-various-formats-to-read-the-data-from-the-google-sheets) for more information on why we used this option.
|
||||
8. Click on ***Execute Node*** to run the workflow.
|
||||
|
||||
In the screenshot below, you will notice that this node returns all the values from the Google Sheets in the appropriate format.
|
||||
|
||||

|
||||
|
||||
## FAQs
|
||||
|
||||
### What are the various formats to read the data from the Google Sheets?
|
||||
|
||||
There are three different formats to read the data from the Google Sheets.
|
||||
|
||||
- **Unformatted Value:** In this mode, the node calculates the values, but doesn't format them. For example, if cell A1 is 1.23, and cell A2 is =A1, and the format of these cells is currency, then values returned will be of the format number. For cell A1 and A2, the values returned will be 1.23.
|
||||
- **Formula:** In this mode, the node will return the formula. The node does not calculate the values. For example, if cell A1 is 1.23, and cell A2 is =A1, and the format of these cells is currency, then the value returned will be of the format number. The value returned for cell A2 will be =A1.
|
||||
- **Formatted Value:** In this mode, the node calculates the values and returns the values with the cells' format. For example, if cell A1 is 1.23, and cell A2 is =A1, and the format of these cells is currency, then the values returned will be $1.23.
|
||||
|
||||
To change the format, click on ***Add Option*** and select 'Value Render Mode' from the dropdown list. Select the appropriate option you want your output to be returned to from the ***Value Render Mode*** dropdown list.
|
||||
|
||||
### How to enter values in the correct format?
|
||||
|
||||
There are two different formats you can use to add/update data in Google Sheets.
|
||||
|
||||
- **Raw:** This is the default format. In this format, the values are stored as-is and not parsed. For example, the node stores the text 2020-10-01 as a string in the Google Sheets.
|
||||
- **User Entered:** In this format, the node parse the values. It follows the rules that are applied when entering text into the cell via the Google Sheet UI. For example, the node stores the text 2020-10-01 as a date in the Google Sheets.
|
||||
|
||||
To change the format, click on ***Add Option*** and select 'Value Input Mode' from the dropdown list. Select the appropriate option you want your data to be stored in, from the ***Value Input Mode*** dropdown list.
|
||||
|
||||
### How to append an array in the Google Sheets?
|
||||
|
||||
To insert the data in Google Sheets, you have to first convert the data in a valid JSON (key, value) format. You can use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/) to convert the array into JSON format.
|
||||
|
||||
### How to return all the values with the Lookup operation?
|
||||
|
||||
By default, the Lookup operation returns only the first value that it matches. To return all the values that match, click on ***Add Option*** and select 'Return All Matches'. Toggle ***Return All Matches*** to true.
|
||||
|
||||
### How to specify a sheet?
|
||||
|
||||
By default, the Google Sheets node will operate on the default sheet, `Sheet 1`. If you rename the sheet or want to use a different sheet, you have to specify the name of the sheet. You can do that in the ***Range*** field. For example, if you need to use a sheet named `n8n` for the range `A` to `H`, enter `n8n!A:H` in the ***Range*** field.
|
||||
## Read operations
|
||||
|
||||
To read from a sheet:
|
||||
|
||||
1. Select your **Authentication** method and credential. Refer to [Google credentials](/integrations/builtin/credentials/google/) for more information.
|
||||
2. In **Resource**, select **Sheet Within Document**.
|
||||
3. In **Operation**, select **Read Rows**.
|
||||
4. Choose the **Document** and **Sheet** you want to read from.
|
||||
|
||||
### Filters
|
||||
|
||||
By default, the Google Sheets node reads and returns all rows in the sheet. To return a limited set of results:
|
||||
|
||||
1. Select **Add Filter**.
|
||||
2. In **Column**, select the column in your sheet to search against.
|
||||
3. In **Value**, enter a cell value to search for. You can drag input data parameters here.
|
||||
|
||||
If your filter matches multiple rows, n8n returns the first result. If you want all matching rows:
|
||||
|
||||
1. Under **Options**, select **Add Option** > **When Filter Has Multiple Matches**.
|
||||
2. Change **When Filter Has Multiple Matches** to **Return All Matches**.
|
||||
|
||||
### Output formatting
|
||||
|
||||
You can choose how n8n formats the data returned by Google Sheets:
|
||||
|
||||
1. After setting up the node to read rows, select **Add Option** > **Output Formatting**.
|
||||
2. In **General Formatting**, choose one of:
|
||||
* **Values (unformatted)**: numbers stay as numbers, but n8n removes currency signs and other special formatting.
|
||||
* **Values (formatted)**: n8n displays the values as they appear in Google Sheets (for example, retaining commas or currency signs) To do this, n8n converts the data type from number to string.
|
||||
* **Formulas**: n8n returns the formula. It doesn't calculate the formula output. For example, if a cell B2 has the formula `=A2`, n8n returns B2's value as `=A2` (in text).
|
||||
3. Choose your preferred **Date Formatting**.
|
||||
|
||||
## Append an array
|
||||
|
||||
To insert an array of data into Google Sheets, you must convert the data into a valid JSON (key, value) format. You can use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/) to convert the array into JSON format.
|
||||
|
||||
## Cell formatting for update and append
|
||||
|
||||
You can choose how to format the data in cells:
|
||||
|
||||
1. After setting up the node to append data, select **Add Option** > **Cell Format**.
|
||||
2. In **Cell Format**, select one of:
|
||||
* **Let n8n format**: the new cells in your sheet keep the data type of the data in n8n.
|
||||
* **Let Google Sheets format**: allow Google Sheets to style the cells as if you typed the data directly into the cells.
|
||||
|
||||
|
||||
|
||||
@ -4,11 +4,11 @@ The Compare Datasets node helps you compare data from two input streams.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Decide which fields to compare. In **Input 1 Field**, enter the name of the field you want to use from input stream 1. In **Input 2 Field**, enter the name of the field you want to use from input stream 2.
|
||||
1. Decide which fields to compare. In **Input A Field**, enter the name of the field you want to use from input stream A. In **Input B Field**, enter the name of the field you want to use from input stream B.
|
||||
2. **Optional**: you can compare by multiple fields. Select **Add Fields to Match** to set up more comparisons.
|
||||
3. Choose how to handle differences between the datasets. In **When There Are Differences**, select one of the following:
|
||||
* **Use Input 1 Version**
|
||||
* **Use Input 2 Version**
|
||||
* **Use Input A Version**
|
||||
* **Use Input B Version**
|
||||
* **Use a Mix of Versions**
|
||||
* **Include Both Versions**
|
||||
|
||||
@ -17,7 +17,7 @@ The Compare Datasets node helps you compare data from two input streams.
|
||||
|
||||
There are four output options:
|
||||
|
||||
* **In 1 only Branch**: data that occurs only in the first input.
|
||||
* **In A only Branch**: data that occurs only in the first input.
|
||||
* **Same Branch**: data that is the same in both inputs.
|
||||
* **Different Branch**: data that is different between inputs.
|
||||
* **In 2 only Branch**: data that occurs only in the second output.
|
||||
* **In B only Branch**: data that occurs only in the second output.
|
||||
|
||||
@ -17,7 +17,7 @@ Create a [Microsoft Azure](https://azure.microsoft.com/) account.
|
||||
## Using OAuth
|
||||
|
||||
!!! note "Note for n8n Cloud users"
|
||||
You'll only need to enter the Credentials Name and click on the circle button in the OAuth section to connect your Microsoft account to n8n.
|
||||
You'll only need to click on the **Connect my account** button to connect your Microsoft account with n8n.
|
||||
|
||||
|
||||
1. Access the [Microsoft Application Registration Portal](https://aka.ms/appregistrations).
|
||||
|
||||
@ -1,5 +1,48 @@
|
||||
# Release notes
|
||||
|
||||
## n8n@0.203.1
|
||||
|
||||
View the [commits](https://github.com/n8n-io/n8n/compare/n8n@0.203.0...n8n@0.203.1){:target=_blank .external-link} for this version.<br />
|
||||
**Release date:** 2022-11-18
|
||||
|
||||
This is a bug fix release. It resolves an issue with the Google Sheets node versioning.
|
||||
|
||||
## n8n@0.203.0
|
||||
|
||||
View the [commits](https://github.com/n8n-io/n8n/compare/n8n@0.202.1...n8n@0.203.0){:target=_blank .external-link} for this version.<br />
|
||||
**Release date:** 2022-11-17
|
||||
|
||||
This release includes an overhaul of the Google Sheets node, as well as other new features, node enhancements, and bug fixes.
|
||||
|
||||
### New features
|
||||
|
||||
* Add duplicate workflow error handler.
|
||||
* Add workflow data reset action.
|
||||
* Add credential runtime checks and prevent tampering during a manual run.
|
||||
|
||||
### Node enhancements
|
||||
|
||||
* Compare Datasets: UI copy changes to improve usability.
|
||||
* Google Sheets: n8n has overhauled this node, including improved lookup for document and sheet selection.
|
||||
* Notion (beta) node: use the resource locator component for database and page parameters.
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Core: deduplicate error handling in nodes.
|
||||
* Editor: show back mapping hint when parameter is focused.
|
||||
* Editor: add **Stop execution** button to execution preview.
|
||||
* Editor: curb direct item access linting.
|
||||
* Editor: fix expression editor variable selector filter.
|
||||
* Editor: fix for execution retry dropdown not closing.
|
||||
* Editor: fix for logging error on user logout.
|
||||
* Editor: fix zero treated as missing value in resource locator.
|
||||
* Editor: hide pin data in production executions.
|
||||
* Editor: skip optional chaining operators in Code Node editor linting.
|
||||
* Editor: update to **Expression/Fixed** toggle - keep expression when switching to **Fixed**.
|
||||
* Editor: fix foreign credentials being shown for new nodes.
|
||||
* Editor: store copy of workflow in `workflowsById` to prevent node data bugs.
|
||||
* Editor: fix user redirect to signin bug.
|
||||
|
||||
## n8n@0.202.1
|
||||
|
||||
View the [commits](https://github.com/n8n-io/n8n/compare/n8n@0.202.0...n8n@0.202.1){:target=_blank .external-link} for this version.<br />
|
||||
|
||||
@ -43,6 +43,8 @@ Tooltip
|
||||
tooltip
|
||||
Trello
|
||||
Twilio
|
||||
Unformatted
|
||||
unformatted
|
||||
URI
|
||||
URIs
|
||||
URL
|
||||
|
||||