# Home

Logic Sheet is the best automation solution for Google Sheets. Start using Logic Sheet as the center of your workflow automation.

Get Logic Sheet from [Google Workspace Marketplace](https://workspace.google.com/marketplace/app/logic_sheet_automate_your_spreadsheets/796322869198).

You can use Logic Sheet to set up automated workflows in Google Sheet that run when

* At a specific time
* Every hour, day, week, or month
* When the spreadsheet is edited
* When a Google Form is received
* When you receive a webhook response
* When a new row is inserted

To set up an automation with Logic Sheet, you need to choose a **trigger**, set **conditions** on which the automation will run, and choose at least one **action** to run when the automation is triggered.


# How to install Logic Sheet

### Overview <a href="#overview" id="overview"></a>

Logic Sheet is an add-on for Google Sheets. You can install Logic Sheet from the Google Workspace Marketplace and open it from the Add-on menu at the top menu of your Google Sheets.

If you already know how to install and use Google Sheets add-ons, you can simply [click here to install Logic Sheet](https://workspace.google.com/marketplace/app/logic_sheet_data_processing_data_analysi/796322869198) and skip the following tutorial.

### Getting started <a href="#getting-started" id="getting-started"></a>

Open a spreadsheet in Google Sheets, find the Add-on menu at the top menu.

<figure><img src="/files/Jz4KWMq4VZvTrDOIqcSQ" alt=""><figcaption></figcaption></figure>

Click “Get add-ons” and open the Google Workspace Marketplace. In the search bar, input “Logic Sheet” and hit search. Select Logic Sheet from the search result.

<figure><img src="/files/8vCJ9ZsWEG85UhI5HQW5" alt=""><figcaption></figcaption></figure>

Before installing Logic Sheet, you will be asked to grant the add-on certain permissions to access part of your Google account. These permissions include the ability to edit, create, and delete spreadsheets, connect to external services, and send emails on your behalf.

<figure><img src="/files/zsOJ1AeRVzNZlWynHjzK" alt=""><figcaption></figcaption></figure>

1. See, edit, create, and delete your spreadsheets in Google Drive.
2. Connect to an external service.
3. Display and run third-party web content in prompts and sidebars inside Google applications.
4. Send emails as you.
5. Allow this application to run when you are not present.
6. Create and update Google Apps Script deployments.
7. Create and update Google Apps Script projects.

These permissions are essential for Logic Sheet to perform certain tasks on your behalf. If you have any questions about how we store and use your data, you can refer to our [Privacy Policy](https://logicsheet.co/privacy).

Click Allow to complete the installation.

Now you can find Logic Sheet from the Add-ons menu of Google Sheets’ top menu. Click Start to open Logic Sheet.

<figure><img src="/files/WsErcUMh1CyUUNejsrcE" alt=""><figcaption></figcaption></figure>

Now you can use Logic Sheet in the sidebar on the right of the screen. For details on how to use all of the features, check our [documentation](https://help.logicsheet.co/).

<figure><img src="/files/u5R5P51se6CZkqz7l4uN" alt=""><figcaption><p>Logic Sheet sidebar</p></figcaption></figure>


# Automation overview

Automate your spreadsheet using Logic Sheet.

Use Logic Sheet Automation to automate your Google Sheets tasks.

With Logic Sheet, you can set up triggers that initiate specific actions upon certain events, such as when a cell is edited or a form is submitted, or at a specific time.

To create an automation workflow in Logic Sheet, you will need to establish a trigger, optional conditions, and at least one action.

All of your automations for a single document can be accessed and managed from add-on sidebar.

To turn an automation on or off, click the toggle bar next to the automation.

To delete an automation, hover over the menu button and select "Delete." Confirm the deletion in the pop-up prompt, and the automation will be removed.

To add a new automation, click the "New automation" button and use the automation builder to set up the trigger, conditions, and actions. It is good practice to change the name of your automation workflow as soon as you open the automation builder.

![Logic Sheet Automation Builder](/files/yNtA9bEfSuIxNSkuDfrA)

To make an automation workflow, you need to go through [Trigger](/automation/trigger), [Conditions](/automation/conditions), and [Actions](/automation/actions).

### [Trigger](/automation/trigger)

A trigger is the event that fires up the automation workflow. In Logic Sheet, you can set up the following triggers:

* Run at a specific time
* Run every hour, every day, every week, or every month
* When a [webhook](/automation/add-connections/webhook) is received
* When a Google Forms response is received
* When a new row/column is inserted

### [Conditions (optional)](/automation/conditions)

Conditions allow you to specify additional criteria that must be met in order for the automation workflow to run. For example, you can set up a condition to only run the automation if the value of a specific cell meets a certain criterion.

### [Actions](/automation/actions)

An action is the task that will be performed when the automation workflow is triggered. Here are some actions you can use in Logic Sheet.

* Send an email: This action will send an email with specified content and recipients
* Update cell value: This action will update the value of a specific cell in the spreadsheet
* Create a new row: This action will add a new row to the spreadsheet with specified values
* Send a Slack message to a specified channel
* Append a new row in Airtable
* Remove duplicates
* Remove rows in a sheet
* Set formula at a cell
* Refresh formulas in a sheet
* Send an HTTP/API request to a service
* See more action on the [Actions](/automation/actions) page


# Trigger

The trigger is an event that fires the automation.

In Logic Sheet, you can set up triggers to initiate automation workflows based on specific events or times. Currently, we support the following triggers:

* At a specific time
* Every hour, day, week, or month
* When the spreadsheet is edited
* When a Google Form is received
* When you receive a webhook response
* When a new row is inserted

### Choose a trigger type

<figure><img src="/files/MJ9x7bdqS0QsTDSSXgVt" alt=""><figcaption></figcaption></figure>

**Time-driven trigger** runs at a specified time. It can run once or run recursively, like every hour, every day, every week, or every month.

The **Spreadsheet is edited** trigger runs when a spreadsheet is manually edited.

A **Webhook** trigger runs when you have set up a [webhook](/automation/add-connections/webhook) using Logic Sheet and a webhook response is received.

A **form response received** trigger runs when you have connected your spreadsheet with a Google From and a form response is received.

{% hint style="warning" %}
Currently, you can only set up one automation with each one of the above-mentioned three types of triggers. For example, if you have created a "Spreadsheet is edited" trigger, which is a type of "On edit trigger" in one spreadsheet, you cannot create another on edit trigger. You may see the following error message if you create more than one triggers with the same type.

*`An error happened. Error message: Exception: This add-on has created too many time-based triggers in this document for this Google user account.`*

A possible solution to this limit is our [Conditional action](/automation/actions/conditional-actions) feature.
{% endhint %}

### Sheet

In the trigger step, you will be asked to choose a sheet (or worksheet) for the automation.

In most cases, this option will affect how the [conditions](/automation/conditions) you set to run the automation. For example, in the [conditions step](/automation/conditions), if you choose a range condition and set the range as "A1," the app will look up the A1 range in the worksheet you have chosen in the trigger step.

{% hint style="info" %}
If your trigger type is "A form response is received," you have to set the sheet here as the worksheet that is receiving form responses.
{% endhint %}


# Conditions

Decide whether a workflow should run when it is triggered.

This is an optional step that lets you set up a set of conditions to decide whether a workflow should be executed. You can use conditions to fine-control an automated workflow, for example, only run the automation when range A5 is larger than 100.

Conditions are optional. You can skip this step by not adding any conditions in this step. Remember to remove all added conditions if you don't intend to use any conditions.

<figure><img src="/files/GE2ItifQzJ31LyIrpw4a" alt=""><figcaption></figcaption></figure>

Once you have added one condition, you will see an option that lets you choose "When all/any of the conditions are/is met." If you choose "all," the automation will only run if all of the conditions you have set are met. If you choose "any," the automation will run if at least one of the conditions you have set is met.

#### When this value

In this field, you can type in the value that you want to compare. Usually, you will need to use a [merge tag](/automation/merge-tags) to refer to the dynamic data in your spreadsheet or in the context of an automation run. For example, `{{Range A1}}` will give you the value of cell A1. If you are using an edit trigger, `{{new value}}` will give you the new value when a cell is edited.

#### Condition

The Condition dropdown menu here refers to the operator of the comparison you want to make. Here are all the operators you can choose:

* is equal to
* is not equal to
* is greater than (numbers)
* is greater than or equal to (numbers)
* is less than (numbers)
* is less than or equal to (numbers)
* contains
* does not contain
* is empty
* is not empty

#### Value

The value to compare to. The following configuration will let the automation run only when cell A1 is greater than 100.

<figure><img src="/files/GE2ItifQzJ31LyIrpw4a" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**Heads up (if you used Logic Sheet before January 2023)!** We have improved the condition form. Now, you can compare two values directly instead of comparing the cell value to a specific value as before. To check if the value in cell A3 is equal to 10, simply enter {{Range A3}} in the first input and 10 in the "This value" input. In the edit trigger, to check if the edited range meets certain conditions, use the {{New value}} merge tag instead of the {{edited range}} tag.
{% endhint %}


# Actions

Actions to execute when the automation is triggered.

Once an automation is triggered and the conditions are met, Logic Sheet will run actions that you have set in this step.

{% hint style="warning" %}
You need at least one action to make a complete automation. If no action is set, the automation will not run.
{% endhint %}

### Add an action

<figure><img src="/files/PZd1DXY3kL1NN7oiDwSD" alt=""><figcaption></figcaption></figure>

Currently, we support the following types of actions.

* [Send an email](/automation/actions/send-an-email): Send an email from your Gmail account.
* [Send a Slack message](/automation/actions/send-a-slack-message): Send a message to a specific channel in the Slack workspace you have authorized to.
* [Update Airtable](/automation/actions/update-airtable): Updates a table in your Airtable account automatically.
* [Recalculate the current sheet](/automation/actions/recalculate-the-current-sheet): Hard refresh the worksheet you chose in the trigger step and refresh the results of formulas set in the worksheet.
* [Make an HTTP request](/automation/actions/make-http-request): Send an HTTP request automatically.
* Set formula at cell
* Set value at cell/Update a cell's value
* Grant or remove access to/from a spreadsheet
* Insert a new sheet to the current spreadsheet
* Remove duplicates in a chosen sheet
* Remove rows
* Remove last rows
* More to come...

### Remove an action

Click the close button on the top right of each action form to remove an action.

### Action run sequence

Actions will run sequentially if you choose multiple actions.


# Conditional actions

This feature allows you to add conditions to each of the actions you set, so that the actions will only run when the conditions are met.

Introducing Conditional Actions - the feature that gives you the power to add conditions to each of your actions, ensuring that they only run when specific conditions are met. This means you can easily set up multiple triggers with the same trigger type in the same spreadsheet, and run different actions based on different conditions. To get started, simply add a set of conditions to each action you have set.

{% hint style="success" %}
Conditions are optional. If you don't set any conditions in action, the action will always run.
{% endhint %}

In each action, you can choose to add a set of conditions.

<figure><img src="/files/FVR76vVyy7NM3ni0gVmT" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**Heads up (if you used Logic Sheet before January 2023)!** We have improved the condition form. Now, you can compare two values directly instead of comparing the cell value to a specific value as before. To check if the value in cell A3 is equal to 10, simply enter {{Range A3}} in the first input and 10 in the "This value" input. In the edit trigger, to check if the edited range meets certain conditions, use the {{New value}} merge tag instead of the {{edited range}} tag.
{% endhint %}

You can choose multiple action conditions. If you do so, remember to choose whether you want the action to run when "all" of the conditions are met or when at least one of the conditions is met.

{% hint style="info" %}
This feature is useful when you want to set up multiple triggers with the same trigger type in the same spreadsheet. Remember, you cannot set up more than one same trigger type in one spreadsheet. With this feature, you can set up one trigger and run different actions based on different conditions.
{% endhint %}


# Update Airtable

Update a table in your Airtable.

In order to use this automation action, you will also have to [connect your Google Sheets with Airtable](/automation/add-connections/airtable-connection) first.

To use the update Airtable action, you first need to make a new automation by clicking on the *New automation* button in your Logic Sheet sidebar. In this tutorial, I will simply use the “*Spreadsheet is edited*” trigger and choose to not set any conditions.

In the action step, choose the “*Update Airtable*” action. Please note that if you haven’t connected your Airtable account, you will be asked to connect your Airtable account. Click the Connect button to proceed.

![Airtable Google Sheets integration automation](/files/79hWB5OjuhmOodSiSltp)

After you have connected to your Airtable account in the prompt window, you will be able to set up the Airtable action.

The first thing you need to do is open the Airtable base and table that you want to update and copy the Airtable URL from your browser. Then you can paste the URL in Logic Sheet and fetch the fields. Once you paste the URL, Logic Sheet will automatically fetch all the fields from Airtable.

![Airtable Google Sheets integration automation](/files/zgJkSPsJ9QrIVj7wzBZS)

Now let’s fill the fields in with some data. You can of course use static data, but chances are that you want to use dynamic data in your Google Sheets in these fields. In this example, I will just try to pass the value that I edited and the range of the edited cell to Airtable using merge tags.

Merge tags are values that are wrapped in double curly braces that Logic Sheet uses to pass dynamic data in Google Sheets. Read more about [merge tags](/automation/merge-tags) here.

So the configuration will be like

![Airtable Google Sheets integration automation](/files/8gg5ycNXzGXmFPmXwc67)

Now let’s preview and save the new automation. Once it’s saved, let’s make a new edit at cell A1.

![Airtable Google Sheets integration automation](/files/XgWhfAuYr9DCbpeqTTxi)

And let’s check the Airtable to see if the new record has been added. And yes, it has been appended to the last row.

![Google Sheets Airtable integration](https://static.logicsheet.co/img/site/airtable-intro/airtable-action-5.png)

This is just a simple example of how you can send dynamic data in Google Sheets to Airtable. Using our powerful [merge tags](https://help.logicsheet.co/automation/merge-tags), you can make your requests way more dynamic.


# Recalculate the current sheet

This action will simply hard refresh the selected worksheet.&#x20;

This action is useful if you use custom formulas in your worksheet and you want them to retrieve the latest results. For example, if you have a [LogicSheetAPI](/functions/pull-from-an-api/the-logicsheetapi-formula) formula working in a worksheet and you want the formula to refresh once every hour, you can set up an hourly time-driven trigger and run this action.


# Send a Slack message

This action will send a Slack message using the Logic Sheet Slack bot.

![An example of how Logic Sheet Slack bot works](/files/GRJvb2UDAbznXXkGGnoV)

{% hint style="warning" %}
**Authorization needed**

You need to authorize your Slack Workspace to make this action work. If you haven't connected to a Slack Workspace, you may see a warning that asks you to connect to Slack.

To connect to third-party services, click the "Add connection" button to open the service connector. [Read more about adding connections here](/automation/add-connections).
{% endhint %}

![Email sent by Logic Sheet](/files/6S87TkKCHym9i6upqzWP)

### Channel

The Slack channel to send the message to. Don't include a # in this field. It should be "general", not "#general".

### Message

The message that will be sent to the channel selected. Plain text only.

{% hint style="success" %}
**Merge tag available**

You can use the following merge tags in the Value field here. See [how merge tags work](/automation/merge-tags).

* {{range A1}}: The value of cell A1(dynamic), or other cells of your choice.
* {{old value}}: The value of the cell prior to editing.
* {{new value}}: The new value of the cell after being edited.
* {{editor}}: The email address of the user who made the edit.
* {{edited range}}: The notation (string) of the cell being edited.
* {{column A}}: All values in column A(dynamic).
* {{row 1}}: All values in row 1(dynamic).
* {{sheet}}: The name of the sheet that was edited or set in the trigger step.
* {{spreadsheet url}}: The URL of the spreadsheet that this automation belongs to.
* {{automation name}}: The name of the automation workflow you have set.
* {{form values}}: All values of the form submission that was received.
* {{form values 1}}: The first value (or the nth value if you set the number as n) of the form submission that was received.
  {% endhint %}


# Send an email

This action will send an email from your Gmail account.

![Email sent by Logic Sheet](/files/6uLMwDPnro836CMSxIKk)

### To (required)

The recipient(s) of the email. It should be the email address or email addresses that will receive this email. You can set up multiple email addresses separated by a comma in this field.

**Multiple fixed emails**

```
email1@example.com, mail2@example.com
```

**Multiple emails using merge tag**

Suppose that the value in cell B5 and F4 are email addresses, you can do this for the recipients:

```
email@example.com, {{range B5}}

OR

{{range B5}}, {{range F4}}
```

### Subject (required)

The subject of the email.

### Email body (required)

The email content.

{% hint style="success" %}
**Merge tag available**

You can use the following merge tags in the Value field here. See [how merge tags work](/automation/merge-tags).

* {{range A1}}: The value of cell A1(dynamic), or other cells of your choice.
* {{old value}}: The value of the cell prior to editing.
* {{new value}}: The new value of the cell after being edited.
* {{editor}}: The email address of the user who made the edit.
* {{edited range}}: The notation (string) of the cell being edited.
* {{column A}}: All values in column A(dynamic).
* {{row 1}}: All values in row 1(dynamic).
* {{sheet}}: The name of the sheet that was edited or set in the trigger step.
* {{spreadsheet url}}: The URL of the spreadsheet that this automation belongs to.
* {{automation name}}: The name of the automation workflow you have set.
* {{form values}}: All values of the form submission that was received.
* {{form values 1}}: The first value (or the nth value if you set the number as n) of the form submission that was received.
  {% endhint %}

### Optional fields

You can optionally fill in these fields.

* Sender name: The name that will be shown in the receiver's inbox as the sender name.
* CC: A list of email addresses that this email will copy to.
* BCC: A list of email addresses that this email will blind carbon copy to.
* Reply to: An email address to use as the default reply-to address (default: the user's email address).


# Make HTTP request

Make an HTTP request as an automation action.

The HTTP request action allows you to make an HTTP/API request to a service/endpoint once the workflow is triggered and all conditions are met.

<figure><img src="/files/oJIRmVT6iwvOPIEa1qhN" alt=""><figcaption><p>Automatically send an HTTP request from Google Sheets</p></figcaption></figure>

{% hint style="info" %}
**Merge tag available**

You can use merge tags in any fields in the HTTP request form to refer to dynamic data in your spreadsheet. See how to use [merge tags](/automation/merge-tags) here.
{% endhint %}

In the following example, we will go through how to make a POST request and test it.

First, choose an HTTP method and fill in the URL. In this example, we chose the POST method.

Optionally, you can add request parameters to the request.

<figure><img src="/files/9sxKoIs98W7Cy1yvlsfN" alt=""><figcaption></figcaption></figure>

You can add parameters and headers to the request. In the above example, we used the merge tag `{{last row A value}}` in the parameter "param1", which will be transformed into the real value in the target sheet.

### Example

Now let's try the action with a real-world example. Say we have a Google form linked with a spreadsheet and every time a form response is received, we want to send the form data to an API endpoint.

Here are the questions in the Form.

<figure><img src="/files/XBgXWC1T7MItpstgZ7XK" alt=""><figcaption></figcaption></figure>

And here is how the spreadsheet receiving form requests is set up.

<figure><img src="/files/QNpC6EOdMlzbACNu2MNo" alt=""><figcaption></figcaption></figure>

Let's make a new automation in Logic Sheet.

In the trigger step, choose the "A form response is received" trigger, and, in this example, choose "Form Responses 1" as the sheet.

We will set no conditions in the example. But if you want to, check the [conditions](/automation/conditions) help article.

In the action step, add a new action and choose the "Send HTTP/API request" action.

In this example, we will use the Beeceptor mock API. Requests sent to the mock API endpoint will be logged in Beeceptor's backend.

We will set no parameters and headers in this example, but use the request body to send the form data to the API.

In the JSON request body, we will use merge tags like this:

<figure><img src="/files/7gGqDEosSeZOoZaEWYV1" alt=""><figcaption></figcaption></figure>

In the JSON request body, we used merge tags to indicate the upcoming form response values. `{{form response 1}}` is the first value of the form response we receive, thus it is the timestamp. The same applies to other values.

Now we can save the automation and submit a form response.

<figure><img src="/files/0yhA2v2AXEZj58jidL30" alt=""><figcaption></figcaption></figure>

Once the form is submitted, the values will be added to the spreadsheet.

<figure><img src="/files/O2o85kh6O4pYwfAHWgrN" alt=""><figcaption></figcaption></figure>

And on Beeceptor's backend, we can see that the form values are passed through.

<figure><img src="/files/4GxGACQ44SsCHOcpgLqz" alt=""><figcaption><p>Sending form values to API</p></figcaption></figure>


# Add connections

In order for Logic Sheet to automatically send data from third-party apps to Google Sheets, you must first connect those apps to Logic Sheet.

In order for Logic Sheet to automatically talk to third-party apps like Slack and Microsoft Teams, you must first connect those apps to Logic Sheet. This will give Logic Sheet secure access to send data to those apps.

On the action step of your automation builder, you can select a wide range of action types. But some actions need your authorization, such as Slack. You can not use those actions if you don't authorize them first.

![Send a Slack message is disabled because Slack is not authorized](/files/BWL94R0N0BGu18JBwWe0)

In order to connect to third-party services, click the "Add connections" button and you will see a page to connect to those services.

On the "Connect to services" page, you can have an overview of which apps you have authorized and which ones you haven't.&#x20;

To authorize new apps, click "Connect" in the corresponding service. To disconnect apps that you already connected, click "Disconnect."


# Slack connection

Connecting to Slack will give Logic Sheet authorization to send messages to any channel in your workspace. Logic Sheet will only send messages upon your request and will not send messages on its own.

![](/files/YsjRfMhwUMVHeWqalRof)

Authorized scopes

* Perform actions in channels & conversations. (Send messages to your channels as the Logic Sheet bot)

![Logic Sheet messages in Slack](/files/yr5cU5OexxobT3IAsyYu)


# Airtable connection

Connect your Airtable account to Logic Sheet/Google Sheets.

To get started, you need to install the Logic Sheet add-on from Google’s Workspace Marketplace. In the top menu of your Google Sheets, click Extensions >> Add-ons >> Get add-ons, and then you will see a prompt of the Google Workspace Marketplace. Search the name *Logic Sheet* and you will be able to see and install the add-on.&#x20;

Before we use any of Logic Sheet’s Airtable functionality, you need to open the Integrations page to connect your Google Sheets with your Airtable account. To open the page, find the Logic Sheet add-on from the Extensions menu in your Google Sheets and click the Integrations option. You can also open the integrations page from the hamburger menu in the Logic Sheet add-on sidebar.

![](https://static.logicsheet.co/img/site/airtable-intro/integrations-menu.png)

On the integration page, click on the *connect* button and you will be asked to input your Airtable API key. Your Airtable API key can be found or generated from your [Airtable account page](https://airtable.com/account). Copy the API key from there and paste it into the input in Logic Sheet, and click Connect to Airtable. Your API key will be securely stored in your own Google account and cannot be accessed by anyone other than you.&#x20;

![How to connect to Airtable from Google Sheets](https://static.logicsheet.co/img/site/airtable-intro/connect-to-airtable.png)

Once you have stored your Airtable API key, you will be able to use the Logic Sheet Airtable integrations.


# Webhook

Turn your Google Sheets into a webhook to receive data and trigger automations.

The webhook integration turns your Google Sheets into a webhook so that you can receive data sent to the webhook and trigger automations in Logic Sheet.

### Prerequisites

Before you can create a webhook, you need to do the following steps.

#### 1. Enable the Google Apps Script API in one click

In order to create a webhook for you, Logic Sheet needs to create a Google Apps Script project for you and deploy it as a web app. To do that, we need you to enable the Google Apps Script API in your Google account. The step is effortless to complete and once you have made the change you won't be asked to do so again going forward.

Just open this [link](https://script.google.com/home/usersettings) and enable the Google Apps Script API if it is not already enabled.

<figure><img src="https://static.logicsheet.co/img/addon/enable-api.gif" alt=""><figcaption><p>How to enable Google Apps Script API</p></figcaption></figure>

#### 2. Rename your spreadsheet if it is an "Untitled spreadsheet"

Logic Sheet cannot create a Google Apps Script project for the webhook if your spreadsheet is named "Untitled spreadsheet", because these kinds of spreadsheets are not saved in Google Drive.

In order to solve this problem, all you have to do is to rename the spreadsheet to anything other than "Untitled spreadsheet."

<figure><img src="/files/AcJLtVZo3LvgkX0ZqYXS" alt=""><figcaption><p>Rename your spreadsheet</p></figcaption></figure>

### Creating webhook

To get started, click the Integration option from the add-on menu or the hamburger menu in your Logic Sheet sidebar.

<figure><img src="/files/9A94yaf0ZuMXC7z1mEpS" alt=""><figcaption><p>Create a webhook in Google Sheets using Logic Sheet</p></figcaption></figure>

Before you create a webhook, you need to choose two options.

**Force 200 OK response code:** By default, the webhook will respond with a JSON response body and a 302 Found code. In some cases, the POST request may return a 405 Method Not Allowed code, even though the requested data will be inserted in your Google Sheets successfully. This may cause some trouble when your webhook sender requires a 200 OK response code to count the request as being successful.&#x20;

If this option is checked, all successful requests will return a 200 OK response code. The only drawback is the response body will be in HTML format, rather than JSON format.

It is recommended to keep this option checked.

**Include a timestamp column:** Choose whether to insert a timestamp column at the beginning of the sheet indicating when the data is received. If enabled, you will see the timestamp column like the following.

<figure><img src="/files/x6iXTN46r9rWjlt3dvWX" alt=""><figcaption></figcaption></figure>

Make sure that you have enabled the Google Apps Script API and have renamed your spreadsheet into anything other than "Untitled spreadsheet," so that you can successfully create a webhook.

### Authorizing your webhook

If your webhook is created successfully, you will see the following screen.&#x20;

<figure><img src="/files/N0JAD6kI0qNosr891MW1" alt=""><figcaption></figcaption></figure>

The next step is to authorize your webhook. It is an easy 2-step process.

1. Reload the current spreadsheet in your browser.
2. Choose the **Webhooks** menu in your Google Sheets and click Authorize. Once this step is completed, choose the "🔄 Integrations" menu from the Logic Sheet menu and you will see details of your webhook.

<figure><img src="https://static.logicsheet.co/img/site/webhook/authorize-webhook.gif" alt=""><figcaption></figcaption></figure>

#### Seeing a "Google hasn't verified this app" page?

When you authorize your webhook for the first time, you may see a warning from Google saying that Google hasn't verified this app. Don't worry, this is because the webhook functionality requires us to deploy a Google Apps Script project on your behalf, and you are essentially authorizing the project under your own account to access your spreadsheets data.

To complete the authorization if you see this page, click on the **"Advance"** option on the page, and click **"Go to Webhook for Sheets (unsafe)."** Then you will see a page asking you to allow the project to access and edit your spreadsheets data.

<figure><img src="https://static.logicsheet.co/img/site/webhook/authorize.png" alt=""><figcaption></figcaption></figure>

Still not sure? No problem. The code used in the project is open source and you can check the [source code](https://github.com/choraria/google-apps-script/tree/master/Sheets/Webhooks) here. All the project does is receiving data from the webhook that was deployed and inserting it into the Google Sheets you have specified. No other parties can see your data as you only authorized a project owned by you to access your data.

### Get your webhook details

Once you have completed the authorization process, open the Integrations option from Logic Sheet's add-on menu. You will be able to see your webhook details.

<figure><img src="/files/8qQzfErVPsWm6SYXmYgK" alt=""><figcaption><p>Webhook details for Google Sheets</p></figcaption></figure>

By default, data received by the webhook goes into the first sheet of the current spreadsheet. To change the destination of webhook data, please select a different sheet from the dropdown select.

Note that each time you change the destination sheet, the gid parameter in the webhook URL will change accordingly. The gid parameter is essential for the webhook to function. You can change the value of the gid parameter to the id of any other worksheet in your spreadsheet.

{% hint style="info" %}
You should use a completely empty worksheet as the destination sheet.
{% endhint %}

### Making a request

The webhook accepts both GET and POST methods. For the GET method, data to be passed into the Google Sheets should be included in the query parameters. For the POST method, data should be included in the JSON request body.

#### GET request

Here is how to send values including Name, Age, and Email to a Google spreadsheet using webhook.

<figure><img src="/files/3AMXfgEv9ua0rux6yqrC" alt=""><figcaption><p>Sending data to Google Sheets using Logic Sheet webhook</p></figcaption></figure>

And data is received in Google Sheets and inserted into the destination worksheet.

<figure><img src="/files/z7o7a5Eec3aogu1PTc3h" alt=""><figcaption><p>Sending data to Google Sheets using Logic Sheet webhook</p></figcaption></figure>

#### POST request

You should keep the gid parameter even if you use the POST method.&#x20;

<figure><img src="/files/pzYgJFSdYwVXTdI2mJMv" alt=""><figcaption><p>Google Sheets POST request</p></figcaption></figure>

Then in the request body, present your data in JSON format.

<figure><img src="/files/ZHKcCbXUVBAataYS41HR" alt=""><figcaption><p>Google Sheets POST request</p></figcaption></figure>

And the data will be added to the destination sheet.

<figure><img src="/files/g6aJpg7olRUDRRcBrKzx" alt=""><figcaption><p>Google Sheets POST request</p></figcaption></figure>


# Merge tags

Merge tags enable you to reference to dynamic data in your spreadsheet or the context data of the automated workflow you are building.

Merge tags are used to refer to dynamic data in Logic Sheet automation. When you use merge tags in fields that accept merge tags, the app will "translate" them into their corresponding values when the workflow is being executed. For example, if you use the merge tag {{range B12}} in an email, the merge tag will be replaced by the value in cell B12 when the email is sent.

### Format

Merge tags are all wrapped in double curly braces as in {{merge tag}}. While some merge tags are static, like {{automation name}} and {{spreadsheet url}}, others can be dynamic as you can change them to refer to more specific values, like {{last row 3}} and {{last row 5 value}}.

<figure><img src="/files/RyyYCgfnPYjnuR8W4BJ9" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Each time you edit an input where merge tags are allowed, you will see a preview of the merge tags used as shown in the above screenshot. This feature allows you to preview what the merge tags will look like when the workflow is being executed.
{% endhint %}

### Dynamic merge tags

Merge tags like {{range A1}}, {{column A}}, and {{form values 1}} are dynamic. It means that you can change the values in the merge tags to refer to different data.

For example, in the merge tag {{range A1}}, you can change the value "A1" into "B10" to make the merge tag refer to the value in cell B10.

In {{form values 1}}, you can change the number 1 into 3 to make it {{form values 3}}, which will refer to the 3rd value of the form submission that was received.

### Trigger limits

Some merge tags only work with specific types of triggers. For example, the merge tags {{old value}} and {{new value}} only work with the trigger type "The spreadsheet is edited" because they only exist when there is an editing behavior.

Similarly, the merge tags {{form values}} and {{form values 1}} are only available in the "A form response is received" trigger, because these values cannot be found in other trigger types.

{% hint style="danger" %}
Please note that if you use a merge tag that is limited to one trigger type in a different trigger type, you may see an error message when setting up the automation.
{% endhint %}

<figure><img src="/files/rBfaOTBvAmC2WodOsr4L" alt=""><figcaption><p>What happens when we try to use the {{edited range}} in a time-driven trigger</p></figcaption></figure>

### **How to use merge tags**

#### **{{range A1}}**

The value of the range A1 of the worksheet you have selected. You can change the range to refer to any other cell such as {{range B10}} and {{range F9}}. Since this merge tag only returns one value, multi-cell ranges will only return the value of the first range. For example, {{range A2:B10}} will return the value of range A2.

<figure><img src="/files/6Q0mYnW7Cbg5eczsSXFB" alt=""><figcaption><p>How to use {{range A1}} merge tag in Logic Sheet</p></figcaption></figure>

{% hint style="warning" %}
Some inputs expect a range value, and if you use a merge tag that will return a value, you may encounter an error. For example, in the condition step, if you use a merge tag that represents a value in the input "When the value of cell" (which expects a cell range, you may see the following warning message.

In this case, you will need to change the merge tag to something that represents a cell range, like {{last row 4}}, {{edited range}}, use simply type a cell range without the merge tag, like A1, F5.
{% endhint %}

<figure><img src="/files/dJt7fGiJilnE2fLfLm50" alt=""><figcaption></figcaption></figure>

#### **{{column A}}**

All values in column A(dynamic). You can use other values like {{column B}}, {{column G}} as well.

<figure><img src="/files/tyDmXYc1cuWBs68mbEeB" alt=""><figcaption><p>Merge tag {{column C}} will return all values in column C. The values will be separated by commas.</p></figcaption></figure>

#### **{{row 1}}**

All values in row 1(dynamic). You can use other values like {{row 3}}, {{row 99}} as well.

<figure><img src="/files/YzBN0ILtrCFZyNGAM5yx" alt=""><figcaption><p>Merge tag {{row 4}} will return all values in row 4. The values will be separated by commas.</p></figcaption></figure>

#### **{{sheet}}**

The name of the sheet that was edited or set in the trigger step.

<figure><img src="/files/GcdIPBBAZ4ncCoahx1nU" alt=""><figcaption><p>The merge tag {{sheet}} in this example returns the worksheet name "Product".</p></figcaption></figure>

#### {{Sheet2!A1:B5}}

This merge tag will get the data in any range of the spreadsheet and combine them to a test separated by commas. You can use any combination of sheet names of ranges in your spreadsheet. The sheet name and the range are separated by ! in this merge tag. For example, the merge tag {{Sheet5!B2:C6}} will return the values combined in the range B2:C6 in the sheet Sheet 5.

This merge tag is especially useful when you want to check if a range contains a certain value in the conditions.

#### **{{automation name}}**

The name of the automation workflow you have set.

<figure><img src="/files/uPSIy1PU44Lp9FtCfKvI" alt=""><figcaption><p>Automation name cannot be preview in the setup step. But nevertheless, it will return the name of the automation you have set.</p></figcaption></figure>

#### **{{spreadsheet url}}**

The URL of the spreadsheet that this automation belongs to.

<figure><img src="/files/yinB9Kidid4kCN4gALA6" alt=""><figcaption></figcaption></figure>

#### **{{last row 1}}**

The **A1 notation** of the first cell at the 1st column of the last row. Accordingly, {{last row 5}} returns the **A1 notation** of the cell at the 5th column of the last row.

<figure><img src="/files/6BcTnRMOhyVKqVFs8O2w" alt=""><figcaption><p>The merge tag {{last row 2}} will return B10 in this example.</p></figcaption></figure>

{% hint style="info" %}
This merge tag only refers to the cell name, not the value in the cell. For the value in the cell, use the {{last row 1 value}} merge tag.&#x20;

In this example, {{last row 3}} will return "C3", whereas {{last row 3 value}} returns "Sam".

<img src="/files/nnqSroWC4gmMb8cJ14B8" alt="" data-size="original">
{% endhint %}

#### &#x20;**{{last row 1 value}}**

The **value** of the first cell at the 1st column of the last row. Accordingly, {{last row 5}} returns the **value** of the cell at the 5th column of the last row.

<figure><img src="/files/S57a947q6qdscup8Mtlz" alt=""><figcaption><p>The merge tag {{last row 2 value}} will return "Product LUNZZ" in this example.</p></figcaption></figure>

{% hint style="success" %}
You can also use column names in the last row merge tags. For example, {{last row C values}} is equal to {{last row 3 value}}.
{% endhint %}

#### **{{old value}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> This merge tag will return the old value of the cell that has been edited. If an empty cell was edited, this merge tag will return "undefined". For example, if cell A1 was edited from 10 to 100, this merge tag will return 10.

{% hint style="info" %}
This merge tag, like merge tags that are only available in the "A spreadsheet is edited" trigger, cannot be previewed because their data is only available when the automation is being executed. But you will see a green text telling you the merge tag is valid when previewing it.

![](/files/bkWXtXuCHrhZDYdrNyxK)
{% endhint %}

#### **{{new value}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> This merge tag will return the new value of the cell that has been edited. For example, if cell A1 was edited from 10 to 100, this merge tag will return 100.

#### **{{editor}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> This merge tag will return the email address of the user who edited the spreadsheet.

#### **{{edited range}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> This merge tag will return the cell that has been edited in an on-edit trigger. For example, if cell A1 was edited from 10 to 100, this merge tag will return the text "A1".

#### **{{form values}}**

&#x20;<mark style="color:orange;">Available in the "A form response is received" trigger only.</mark> All values of the form submission that was received. Values are separated by commas.

#### **{{form values 1}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> The first value (or the nth value if you set the number as n) of the form submission that was received.

<figure><img src="/files/zAsauWdxKUFBGSYvoIIc" alt=""><figcaption></figcaption></figure>

In the above example, we are using a Google Form to receive feature requests. When the automation is triggered, {{form values 2}} will return the second value of the form response, or the Feature name, and {{form values 3}} will return the Description of the feature requested.

#### **{{triggering row N value}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> The merge tag will return the **value** of the cell at column N in the same row where the automation is triggered.&#x20;

#### **{{triggering row N}}**

<mark style="color:orange;">Available in the "A spreadsheet is edited" trigger only.</mark> The merge tag will return the **A1 notation** of the cell at column N in the same row where the automation is triggered.&#x20;

&#x20;In the following example, if the automation was triggered by an edit in range B3, {{triggering row C value}} will be the value of range C3, or 1396. {{triggering row C}} will return the range name of C3.

<figure><img src="/files/pj5UMlp5yxiFR9le6CC3" alt=""><figcaption></figcaption></figure>

**{{current date}}**

This merge tag will return the date at the time when the automation runs. The format is dd/mm/yyyy, like 7/3/2024.

**{{current year}}**

This merge tag will return the year at the time when the automation runs. The format is yyyy, like 2024.

**{{current month}}**

This merge tag will return the month at the time when the automation runs. The format is the full name of the month, like January, or August.

**{{current weekday}}**

This merge tag will return the weekday (day of the week) at the time when the automation runs. The format is the full name of the weekday, like Monday, or Sunday.


# Work with APIs

### Pull from an API

<figure><img src="/files/GQX4epn5ysePQv0PEHlD" alt=""><figcaption></figcaption></figure>

**Method:** Choose the HTTP method to pull data from an API endpoint. Currently, we only support the GET and POST methods. If you want to use other HTTP methods like PUT, DELETE and PATCH, please use the [LogicSheetAPI formula](/functions/pull-from-an-api/the-logicsheetapi-formula#how-to-use-logicsheetapi). Please check your API reference to decide which method you want to use.

**API URL:** Type in the URL and full path of the API endpoint, including all parameters. Parameters are usually used to pass in API keys for simple authentication methods.

For example: <https://mydata.com/api/v2/dataset1?para1=value1\\&api\\_key=keyvalue>

**Headers:** Headers let you pass additional information with the API request. Request headers can be used in the request to provide information about the request context to help the server tailor the response. You can use, for example, the Authorization header to provide authentication credentials.

If the server responded with a 401 Unauthorized status, usually you should provide credentials to authenticate the request. To do so, you will need to use the Authorization header.

The value of the Authorization header should be :

```
<type> <credentials>
```

*Common types*:

* Basic: Base64-encoded credentials.
* Bearer: Bearer tokens to access OAuth 2.0-protected resources

**Path:** If provided, the function will only retrieve data that is located in the path. For example, You can enter key1.key2\[1].key3 to retrieve to the value of key3 of the second object of array key2 of the object key1.

If the JSON response looks like this:

```json
{
    "id": 1001,
    "person": [
        {
            "name": "John",
            "age": 45,
            "city": "New York"
        },
        {
            "name": "Rich",
            "age": 34,
            "city": "London"
        }
    ]
}
```

the path person\[1].name will return “Rich”, while the path person\[0] will return all information about John.

**Request body:** Enter the JSON format request body. This will only apply to the POST method. For example, when creating a resource using POST, the request body usually contains the representation of the resource to be created.

### Enrich with an API

**Column number:** Type in the number of columns of the data to be processed. For example, column C should be 3.

**Start row:** Type in the number of the start row of the data to be processed.

This function will only process a column of data, so you have to choose which column and from which row you want the data to be processed. This is an example

**Method:** Choose the HTTP method to send data to an API endpoint. Currently, we only support the GET and POST methods, though we will add more. Please check your API reference to decide which method you want to use.

**API URL:** Type in the URL and full path of the API endpoint, including all parameters. Parameters are usually used to pass in API keys for simple authentication methods.

You can also include {{merge\_tag}} in the url parameters to represent data from the sheet to be sent to the API endpoint.

For example: <https://mydata.com/api/v2/dataset1?api\\_key=keyvalye\\&data=\\{{merge\\_tag\\}}>

**Headers:** Headers let you pass additional information with the API request. Request headers can be used in the request to provide information about the request context to help the server tailor the response. You can use, for example, the Authorization header to provide authentication credentials.

If the server responded with a 401 Unauthorized status, usually you should provide credentials to authenticate the request. To do so, you will need to use the Authorization header.

The value of the Authorization header should be :

```
<type> <credentials>
```

*Common types*:

* Basic: Base64-encoded credentials.
* Bearer: Bearer tokens to access OAuth 2.0-protected resources

**Path:** If provided, the function will only retrieve data that is located in the path. For example, You can enter key1.key2\[1].key3 to retrieve to the value of key3 of the second object of array key2 of the object key1.

If the JSON response looks like this:

```
{
    "id": 1001,
    "person": [
        {
            "name": "John",
            "age": 45,
            "city": "New York"
        },
        {
            "name": "Rich",
            "age": 34,
            "city": "London"
        }
    ]
}
```

the path person\[1].name will return “Rich”, while the path person\[0] will return all information about John.

**Request body:** Enter the JSON format request body. This will only apply to the POST method. For example, when creating a resource using POST, the request body usually contains the representation of the resource to be created. use {{merge\_tag}} to represent data from the sheet to be sent to the API endpoint.

For example:

```
{
    "data": {{merge_tag}},
    "process": true
}
```


# The LogicSheetAPI formula

Use the =LogicSheetAPI custom function to import API directly to your worksheet using cell formulas.

### How to use =LogicSheetAPI?

{% hint style="info" %}
If you want to use the =LogicSheetAPI function in a new spreadsheet, you have to launch the Logic Sheet add-on at least once in that spreadsheet. The add-on can be found in the Add-on menu. If you haven't installed Logic Sheet yet, click [here](https://workspace.google.com/marketplace/app/logic_sheet_data_processing_data_analysi/796322869198) to install.
{% endhint %}

Call the LogicSheetAPI custom function by typing =LogicSheetAPI in any cell. Now you will see a list of parameters to fill in to use the function. You will also be able to see the documentation inside your Google Sheets. If the documentation doesn't show up, just click the question mark(?) next to the function name.

#### Parameters

Here are the parameters you can use to call LogicSheetAPI.

{% hint style="info" %}
It's a good practice to store parameter content in separate cells for later reference. It will also help you escape quotations markets if you want to include a JSON request body.
{% endhint %}

* **method:** The HTTP request method for the API request. It can either be "GET" or "POST".
* **url:** The URL of the API endpoint. You can also include request parameters in the URL.
* **path:** *\[optional]* A list of paths to be imported. For example: "/first\_name, /email" will only import data under the "first\_name" and "email" paths. If you don't want to specify the path, just use "" in the parameter to escape it.
* **header:** *\[optional]* The request header should be a comma-separated list of header items. You can use it to pass authentications. For example: "apikey=YOUR\_API\_KEY,content-type=application/json". No space before or after commas.
* **requetBody**: *\[optional]* For the POST method only. The request body sent to the API endpoint. Type in JSON format if you are using application/json.

#### Here is an example GET request

<mark style="color:blue;">`GET`</mark> `https://api.thecatapi.com/v1/votes?limit=3`

#### Headers

| Name         | Type             | Description |
| ------------ | ---------------- | ----------- |
| x-api-key    | DEMO-API-KEY     |             |
| content-type | application/json |             |

This is how you can make the GET request using LogicSheetAPI.

```
=LogicSheetAPI("GET", "https://api.thecatapi.com/v1/votes", "", "x-api-key=f2b451ef-af64-49d4-8594-378ee24ae040,content-type=applic
ation/json")
```

This is an example of the LogicSheetAPI working on Google Sheets. Parameters are stored in separate cells.

![GET request using LogicSheetAPI function](/files/oCwymu8X3C7LMPfnFzba)

This is an example result:

![GET response using LogicSheetAPI function](/files/rhXKVli6zuYlEq9g9t5X)

#### Here is an example POST request

<mark style="color:green;">`POST`</mark> `https://api.thecatapi.com/v1/votes/`

#### Headers

| Name         | Type             | Description |
| ------------ | ---------------- | ----------- |
| x-api-key    | DEMO-API-KEY     |             |
| content-type | application/json |             |

#### Request Body

| Name      | Type           | Description |
| --------- | -------------- | ----------- |
| image\_id | the\_image\_id |             |
| sub\_id   | my-user-1234   |             |
| value     | 3              |             |

This is how you can make the POST request using LogicSheetAPI.

```
=LogicSheetAPI("POST", "https://api.thecatapi.com/v1/votes", "", "x-api-key=DEMO-API-KEY,content-type=applic
ation/json", D2)
```

{% hint style="info" %}
In this example, we use cell D2 to store the request body in order to escape the quotation marks in the JSON string.
{% endhint %}

This is an example of the LogicSheetAPI working on Google Sheets. Parameters are stored in separate cells.

![POST response using LogicSheetAPI function](/files/ohx0i4ow1Ic9X78aruOq)


# Database connector

Connect Google Sheets to databases.


# MySQL

In this article, we will go through how to use [Logic Sheet](https://logicsheet.co/) to connect your spreadsheet with a MySQL database. Logic Sheet has a custom formula that allows you to write SQL queries from any cell in a spreadsheet and retrieve data from a database.

### Setting up connections between Google Sheets and MySQL

Once you have opened the Logic Sheet add-on, you can start typing in any cell in your worksheet to call the Logic Sheet MySQL formula. All Logic Sheet formulas start with the combination LogicSheet, so if you start typing =LogicSheet in any cell, you will see a range of Logic Sheet formulas.

![Logic Sheet formulas](https://static.logicsheet.co/img/site/article-sheet-mysql/logicsheet-formulas.png)

Note that there are two MySQL-related formulas. The LogicSheetMySQLTable formula will pull data from a table in your database and it doesn’t need you to write any SQL queries. You can imagine this is a simpler version of the LogicSheetMySQL formula.

The formula we are going to use the most is the LogicSheetMySQL formula, in which you can not only pull data from the database but also send data from your Google Sheets to a database.

In order to connect to a MySQL database, you need to prepare the following information.

* Database URL (or IP address)
* Database port number
* Database user name
* Database password
* Database name

Like other Google Sheets formulas, you can refer to values that are stored in other cells in a formula cell. In this case, we will store the credentials in the first and second rows so that we can refer to them in later formula calls.

![LogicSheetMySQL get data from MySQL to Google Sheets](https://static.logicsheet.co/img/site/article-sheet-mysql/logicsheetmysql-firstcall.png)

Now that we have provided all the credentials needed to connect to the test database created using *db4free.net*, we need to write a SQL query to tell the database what we need. I have previously created some dummy data in the test database in a table called users. Let’s try pulling data from the users table using the SQL query SELECT \* FROM users.

And voila, we have all the data from the users table in the test database in our Google Sheets.

![Select a table from MySQL database to Google Sheets](https://static.logicsheet.co/img/site/article-sheet-mysql/select-from-all-users.png)

### Run complex queries

In the last section, we successfully connected Google Sheets to the test MySQL database. But in order to run more complex queries, we also need to use references. This, on the one hand, can help us escape double quotes. On the other hand, it allows us to include dynamic data in the query so that we can interact with the database using data in Google Sheets.

In the following example, I will try to send a row of data from Google Sheets to the users table of the MySQL database.

![](https://static.logicsheet.co/img/site/article-sheet-mysql/bob-raw.png)

In the example, I will try to send a new user row (Bob) to the database.

In order to more conveniently refer to the data, I will use cell D5 to build the SQL query that contains data from A5 to C5. The query should be as follow:

```sql
INSERT INTO users (name, email, age)
VALUES ('Bob', 'bob@example.com', '36');
```

In this case, we will use the =CONCATENATE formula in Google Sheets to build the SQL query.

![](https://static.logicsheet.co/img/site/article-sheet-mysql/bob-concat.png)

The formula should return the right query in cell D5 like this.

![](https://static.logicsheet.co/img/site/article-sheet-mysql/bo-finanl.png)

After building the query, we will be able to send the query to the MySQL database using the LogicSheetMySQL formula.

![](https://static.logicsheet.co/img/site/article-sheet-mysql/bob-mysql-call.png)

The formula returns a “Done” in cell D5 and which means it has successfully sent the data to the database.

Let’s check the users table using the same formula. And the user Bob is in the database!

![](https://static.logicsheet.co/img/site/article-sheet-mysql/mysql-bob-done.png)

In the above examples, we covered how to pull and push MySQL data from Google Sheets using [SQL verbs](https://www.w3schools.com/sql/sql_quickref.asp) like SELECT and INSERT. We can already imagine what else we can do with the LogicSheetMySQL formula.

For example, we can search for particular data using the WHERE statement and remove data using the DELETE verb. There is no limit to what you can do if you know how to write effective SQL queries.

### Whitelist Google service IPs

The LogicSheetMySQL formula uses Google Apps Script’s JDBC service to connect to MySQL databases. Sometimes, your database may have a firewall that blocks requests from unknown IP addresses.&#x20;

In order to create a database connection using the LogicSheetMySQL formula, you must allow-list certain IP ranges in your database settings to allow the JDBC service to access it. These are the address ranges you'll need to [allow-list](https://www.gstatic.com/ipranges/goog.txt).


# Get data

### Get data from a database

This function allows you to pull data from an external MySQL database. You can only retrieve data from one table of the database each time. The data will be inserted starting from the cell which your cursor has selected.

In order to create a database connection using the JDBC service used by this function, you must allow certain IP ranges in your database settings to allow Google Apps Script to access it. These are the [IP address ranges](https://www.gstatic.com/ipranges/goog.txt) you’ll need to allow list.

**Database type:** The function currently supports MySQL, Google Cloud SQL MySQL, Microsoft SQL Server, and Oracle databases.

**Database URL:** The URL/Hostname address of the database, without port.

**Database port** Port of the database. The JDBC service used by this function can only connect to ports 1025 and above. Ensure your database is not serving off a lower port.

**Database name:** The name of the database to retrieve data.

**Table name:** The name of the table in the database to retrieve data.

### Get data from a webpage

<figure><img src="/files/y1NEBJe1lTMi2bqRKzBN" alt=""><figcaption></figcaption></figure>

**Webpage url:** The webpage url where the desired data is located.

**Data type:** Select the type of desired structured data. It can be a table content or a list on the webpage.

**Data index:** The index, starting at 1, which identifies which table or list as defined in the HTML source should be returned. (The indices for lists and tables are maintained separately, so there may be both a list and a table with index 1 if both types of elements exist on the HTML page.)


# Clean and format data

### **Remove duplicate rows**

This function will simply remove all extra rows that have the same value in each cell. Only one duplicate row will be preserved.

### Change text casing

This function will change the text casing of all values of the selected range.

**Data range:** Select the data range. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Case type:** Select the desired case type from the list. Currently we support the following types:

* Upper case (THIS IS UPPERCASE
* Lower case (this is lower case)
* Proper case (This Is Proper Case)
* Sentence case (This is sentence case)
* Upper camel case, or pascal case (ThisIsUpperCamelCase)
* Lower camel case (thisIsLowerCamelCase)
* Train case (This-Is-Train-Case)
* Snake case (this\_is\_snake\_case)
* Kebab case (this-is-kebab-case)

### Round numbers

This function will round all numbers to the nearest integers.

**Data range:** Select the data range. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

### Clean data

This function allows you to clean data in the selected range. For example, you can remove all punctuations from text values.

**Data range:** Select the data range. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Option:** How do you want your data to be clean? We support the following types:

* Remove lead spaces. This will remove leading spaces from all cells in the selected range.
* Remove trailing spaces. This will remove trailing spaces from all cells in the selected range.
* Remove all non-numbers. This will remove all values that are not numbers from all cells in the selected range. For example: “He is 30 years old.” will become “30”.
* Remove all numbers: This will remove all values that are numbers from all cells in the selected range. For example: “He is 30 years old.” will become “He is 30 years old.”.
* Remove all punctuations. This will remove all punctuations from all cells in the selected range. For example: “He is 30 years old, isn’t he?” will become “He is 30 years old isnt he”.

### Unpivot data

This function will transform a pivot table into raw data. Read more [here](https://docs.tibco.com/pub/spotfire/6.5.1/doc/html/data/data_unpivoting_data.htm#:~:text=An%20unpivot%20transformation%20is%20one,in%20the%20new%20data%20set).

**Data range:** Select the data range. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

![Data range example in Google Spreadsheets](/files/-MdXCCE240s2rPaqFmtL)

### Unix time converter

This function will convert epoch time/UNIX timestamps into the UTC time. This is useful when you have retrieved a column of timestamps from an API endpoint that uses the UNIX timestamp.

**Data range:** Select the data range. A range represents a single cell or a group of adjacent cells in your spreadsheet. Only one column each execution is allowed.


# Calculate

### Insert running totals

This function will insert a column of running total values of the selected column next to it.

**Column number:** Type in the number of columns of the data to be processed. For example, column C should be 3.

**Start row:** Type in the number of the start row of the data to be processed.

This function will only process a column of data, so you have to choose which column and from which row you want the data to be processed. Here is an example:

<figure><img src="/files/bhwJapxh12w3DMfmva1K" alt=""><figcaption></figcaption></figure>

### Insert growth rate

This function will insert a column of growth rate values of the selected column next to it.

**Column number:** Type in the number of columns of the data to be processed. For example, column C should be 3.

**Start row:** Type in the number of the start row of the data to be processed.

This function will only process a column of data, so you have to choose which column and from which row you want the data to be processed. Here is an example:

<figure><img src="/files/bhwJapxh12w3DMfmva1K" alt=""><figcaption></figcaption></figure>


# Finance

The finance functions of Logic Sheet rely on the Alpha Vantage database, which is a free financial information provider. In order to use Logic Sheet to retrieve finance data such as real-time share prices or currency exchange rates, you have to gain an Alpha Vantage API key. The API key is provided completely free and it only takes you less than one minute to register. You can use the API key repeatedly.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

### Alpha Vantage API Key

Type in and save your Alpha Vantage API key here so that you don’t have to type it every time you use a Finance function.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

### Get share prices

This function allows you to retrieve the share price data of a given company.

<figure><img src="/files/4TcZ1WI6SjmO7ElALdyk" alt=""><figcaption></figcaption></figure>

**API key:** This function relies on the Alpha Vantage API for information. You will need to get a free Alpha Vantage API key first to use this function.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

**Data type:** Select the time interval of the share price to retrieve.

* “Intraday means “within the day.” In the financial world, the term is shorthand used to describe securities that trade on the markets during regular business hours.” – Investopedia

**Interval for intraday data:** Time interval between two consecutive data points in the time series.

**Stock symbol:** The name of the equity of your choice. Example: IBM, APPL, GOOGL. (One symbol each time)

### Fundamental information

This function allows you to retrieve fundamental-data information of a given company such as cash flow, earnings, and balance sheet.

**API key:** This function relies on the Alpha Vantage API for information. You will need to get a free Alpha Vantage API key first to use this function.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

**Data type:**

* Company overview. This type returns the company information, financial ratios, and other key metrics for the equity specified. Data is generally refreshed on the same day a company reports its latest earnings.
* Income statement. This type returns the annual and quarterly income statements for the equity specified. Data is generally refreshed on the same day a company reports its latest earnings.
* Balance sheet. This type returns the annual and quarterly balance sheets for the equity specified. Data is generally refreshed on the same day a company reports its latest earnings.
* Cash flow. This type returns the annual and quarterly cash flows for the equity specified. Data is generally refreshed on the same day a company reports its latest earnings.
* Earnings. This type returns the annual and quarterly earnings (EPS) for the equity specified. Quarterly data also includes analyst estimates and surprise metrics.

**Stock symbol:** The name of the equity of your choice. For example: IBM, APPL, GOOGL. (One symbol each time)

### Forex rates

This function allows you to retrieve the foreign exchange rates between two given currencies.

**API key:** This function relies on the Alpha Vantage API for information. You will need to get a free Alpha Vantage API key first to use this function.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

**Data type:** Select the time interval of exchange rates to retrieve.

* “Intraday means “within the day.” In the financial world, the term is shorthand used to describe securities that trade on the markets during regular business hours.” – Investopedia

**Interval for intraday data:** Time interval between two consecutive data points in the time series.

**From currency:** A three-letter symbol from the [supported currency list](https://docs.logicsheet.co/attachment/supported-currencies#supported-physical-currencies). For example: EUR.

**To currency:** A three-letter symbol from the [supported currency list](https://docs.logicsheet.co/attachment/supported-currencies#supported-physical-currencies). For example: USD.

### Cryptocurrency rates

This function allows you to retrieve exchange rates of a given cryptocurrency in a given market.

**API key:** This function relies on the Alpha Vantage API for information. You will need to get a free Alpha Vantage API key first to use this function.

Get the API Key here: <https://www.alphavantage.co/support/#api-key>

**Data type:** Select the time interval of exchange rates to retrieve.

**Crypto symbol:** The symbol of digital/cryptocurrency. It can be any of the currencies in the [supported cryptocurrency list](https://docs.logicsheet.co/attachment/supported-currencies#supported-cryptocurrencies). For example: BTC.

**Market:** The exchange market of your choice. It can be any of the currency in the [physical currency list](https://docs.logicsheet.co/attachment/supported-currencies#supported-cryptocurrencies). For example: SGD means the Singaporean market.<br>


# Data analysis

Logic Sheet can be used to perform all kinds of data analysis tasks, including ANOVA, or Analysis of variance, correlation, covariance, and descriptive statistics.

Logic Sheet can be used to perform all kinds of data analysis tasks, including ANOVA, or Analysis of variance, correlation, covariance, and descriptive statistics.

### One-way ANOVA

One-way ANOVA, or single-factor ANOVA, is used to determine whether there are any statistically significant differences between the means of several unrelated groups.

<figure><img src="/files/xPZGuIm8FzIM4AOZlCzp" alt=""><figcaption></figcaption></figure>

**Input range:** Select the input range of your data. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Grouped by:** Choose how the data is grouped, it can either be in columns or in rows.

**Data include labels:** Check this if the input range you have selected includes data labels. Please make sure you don’t include non-numeric cells if you uncheck this box.

**Alpha value:** Alpha(α), or the significance level, is the probability of rejecting the null hypothesis when it is true. For example, an alpha value of 0.05 means that a 5% risk of concluding that a difference exists when there is no actual difference. In ANOVA, the alpha value is used to calculate the F crit value in the output.

**Output range:** Set the *cell range* from which the ANOVA table will be displayed. Make sure there is enough space for output data. For example: A12. The output will take at least 15 rows and 7 columns. It could be larger depending on the size of the input. (See example above)

### Two-way ANOVA without replication

Two-way ANOVA, or two-factor ANOVA, is used to analyze the difference between the means of more than two groups. It is also used to estimate how two independent variables, in combination, affect a dependent variable.

<figure><img src="/files/M97K6X59eqUuGlSwBPx9" alt=""><figcaption></figcaption></figure>

**Input range:** Select the input range of your data. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Grouped by:** Choose how the data is grouped, it can either be in columns or in rows.

**Data include labels:** Check this if the input range you have selected includes data labels. Please make sure you don’t include non-numeric cells if you uncheck this box.

**Alpha value:** Alpha(α), or the significance level, is the probability of rejecting the null hypothesis when it is true. For example, an alpha value of 0.05 means that a 5% risk of concluding that a difference exists when there is no actual difference. In ANOVA, the alpha value is used to calculate the F crit value in the output.

**Output range:** Set the *cell range* from which the ANOVA table will be displayed. Make sure there is enough space for output data. For example: A12. The output will take at least 17 rows and 7 columns. It could be larger depending on the size of the input. (See example above)

### Correlation

Correlation is used to find the correlation coefficient between two or more variables.

<figure><img src="/files/GllhHdD7YcWwX0ZQM0W4" alt=""><figcaption></figcaption></figure>

**Input range:** Select the input range of your data. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Grouped by:** Choose how the data is grouped, it can either be in columns or in rows.

**Data include labels:** Check this if the input range you have selected includes data labels. Please make sure you don’t include non-numeric cells if you uncheck this box.

**Output range:** Set the *cell range* from which the correlation results will be displayed. Make sure there is enough space for output data. For example: A12. The output will take at least 3 rows and 3 columns. It could be larger depending on the size of the input. (See example above)

### Covariance

The Covariance tool quantifies the relationship between two sets of values.

<figure><img src="/files/LPgYgEaaPkCGJ0CfpTVc" alt=""><figcaption></figcaption></figure>

**Input range:** Select the input range of your data. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Grouped by:** Choose how the data is grouped, it can either be in columns or in rows.

**Data include labels:** Check this if the input range you have selected includes data labels. Please make sure you don’t include non-numeric cells if you uncheck this box.

**Output range:** Set the *cell range* from which the covariance results will be displayed. Make sure there is enough space for output data. For example: A12. The output will take at least 3 rows and 3 columns. It could be larger depending on the size of the input. (See example above)

### Descriptive statistics

Descriptive statistics describe the basic features of the data. Features include Mean, Standard Error, Median, Mode, Standard Deviation, Sample Variance, Kurtosis, Skewness, Range, Confidence Level, and more.

<figure><img src="/files/oBjmkjG3AJXnBkFWZkgg" alt=""><figcaption></figcaption></figure>

**Input range:** Select the input range of your data. A range represents a single cell or a group of adjacent cells in your spreadsheet. For example, A1:D10 is shown below.

<figure><img src="/files/zT6GNMoB9QouLcqjkaWB" alt=""><figcaption></figcaption></figure>

**Grouped by:** Choose how the data is grouped, it can either be in columns or in rows.

**Data include labels:** Check this if the input range you have selected includes data labels. Please make sure you don’t include non-numeric cells if you uncheck this box.

**Output range:** Set the *cell range* from which the covariance results will be displayed. Make sure there is enough space for output data. For example: A12. The output will take at least 18 rows and 2 columns. It could be larger depending on the size of the input. (See example above)

**Kth Largest:** Returns the k’th largest number in the given group of numbers. For example, if the group of numbers are \[7, 10, 4, 3, 20, 15], and when Kth Largest = 3, the output will be 10.

**Kth Largest:** Returns the k’th smallest number in the given group of numbers. For example, if the group of numbers are \[7, 10, 4, 3, 20, 15], and when Kth Largest = 3, the output will be 7.

**Confidence Level for Mean:** The confidence level represents the theoretical long-run frequency (i.e., the proportion) of confidence intervals that contain the true value of the unknown population parameter. For example, 90% of confidence intervals computed at the 90% confidence level contain the parameter, 95% of confidence intervals computed at the 95% confidence level contain the parameter. The confidence level is selected before examining the data. Most commonly, a 95% confidence level is used.


# Supported currencies

### Supported physical currencies

Here is a list of physical currencies that can be used in Logic Sheet’s forex rates function and cryptocurrency exchange rates function (used as a value of “market”).

| Currency code | Currency name                       |
| ------------- | ----------------------------------- |
| AED           | United Arab Emirates Dirham         |
| AFN           | Afghan Afghani                      |
| ALL           | Albanian Lek                        |
| AMD           | Armenian Dram                       |
| ANG           | Netherlands Antillean Guilder       |
| AOA           | Angolan Kwanza                      |
| ARS           | Argentine Peso                      |
| AUD           | Australian Dollar                   |
| AWG           | Aruban Florin                       |
| AZN           | Azerbaijani Manat                   |
| BAM           | Bosnia-Herzegovina Convertible Mark |
| BBD           | Barbadian Dollar                    |
| BDT           | Bangladeshi Taka                    |
| BGN           | Bulgarian Lev                       |
| BHD           | Bahraini Dinar                      |
| BIF           | Burundian Franc                     |
| BMD           | Bermudan Dollar                     |
| BND           | Brunei Dollar                       |
| BOB           | Bolivian Boliviano                  |
| BRL           | Brazilian Real                      |
| BSD           | Bahamian Dollar                     |
| BTN           | Bhutanese Ngultrum                  |
| BWP           | Botswanan Pula                      |
| BZD           | Belize Dollar                       |
| CAD           | Canadian Dollar                     |
| CDF           | Congolese Franc                     |
| CHF           | Swiss Franc                         |
| CLF           | Chilean Unit of Account UF          |
| CLP           | Chilean Peso                        |
| CNH           | Chinese Yuan Offshore               |
| CNY           | Chinese Yuan                        |
| COP           | Colombian Peso                      |
| CUP           | Cuban Peso                          |
| CVE           | Cape Verdean Escudo                 |
| CZK           | Czech Republic Koruna               |
| DJF           | Djiboutian Franc                    |
| DKK           | Danish Krone                        |
| DOP           | Dominican Peso                      |
| DZD           | Algerian Dinar                      |
| EGP           | Egyptian Pound                      |
| ERN           | Eritrean Nakfa                      |
| ETB           | Ethiopian Birr                      |
| EUR           | Euro                                |
| FJD           | Fijian Dollar                       |
| FKP           | Falkland Islands Pound              |
| GBP           | British Pound Sterling              |
| GEL           | Georgian Lari                       |
| GHS           | Ghanaian Cedi                       |
| GIP           | Gibraltar Pound                     |
| GMD           | Gambian Dalasi                      |
| GNF           | Guinean Franc                       |
| GTQ           | Guatemalan Quetzal                  |
| GYD           | Guyanaese Dollar                    |
| HKD           | Hong Kong Dollar                    |
| HNL           | Honduran Lempira                    |
| HRK           | Croatian Kuna                       |
| HTG           | Haitian Gourde                      |
| HUF           | Hungarian Forint                    |
| IDR           | Indonesian Rupiah                   |
| ILS           | Israeli New Sheqel                  |
| INR           | Indian Rupee                        |
| IQD           | Iraqi Dinar                         |
| IRR           | Iranian Rial                        |
| ISK           | Icelandic Krona                     |
| JEP           | Jersey Pound                        |
| JMD           | Jamaican Dollar                     |
| JOD           | Jordanian Dinar                     |
| JPY           | Japanese Yen                        |
| KES           | Kenyan Shilling                     |
| KGS           | Kyrgystani Som                      |
| KHR           | Cambodian Riel                      |
| KMF           | Comorian Franc                      |
| KPW           | North Korean Won                    |
| KRW           | South Korean Won                    |
| KWD           | Kuwaiti Dinar                       |
| KYD           | Cayman Islands Dollar               |
| KZT           | Kazakhstani Tenge                   |
| LAK           | Laotian Kip                         |
| LBP           | Lebanese Pound                      |
| LKR           | Sri Lankan Rupee                    |
| LRD           | Liberian Dollar                     |
| LSL           | Lesotho Loti                        |
| LYD           | Libyan Dinar                        |
| MAD           | Moroccan Dirham                     |
| MDL           | Moldovan Leu                        |
| MGA           | Malagasy Ariary                     |
| MKD           | Macedonian Denar                    |
| MMK           | Myanma Kyat                         |
| MNT           | Mongolian Tugrik                    |
| MOP           | Macanese Pataca                     |
| MRO           | Mauritanian Ouguiya (pre-2018)      |
| MRU           | Mauritanian Ouguiya                 |
| MUR           | Mauritian Rupee                     |
| MVR           | Maldivian Rufiyaa                   |
| MWK           | Malawian Kwacha                     |
| MXN           | Mexican Peso                        |
| MYR           | Malaysian Ringgit                   |
| MZN           | Mozambican Metical                  |
| NAD           | Namibian Dollar                     |
| NGN           | Nigerian Naira                      |
| NOK           | Norwegian Krone                     |
| NPR           | Nepalese Rupee                      |
| NZD           | New Zealand Dollar                  |
| OMR           | Omani Rial                          |
| PAB           | Panamanian Balboa                   |
| PEN           | Peruvian Nuevo Sol                  |
| PGK           | Papua New Guinean Kina              |
| PHP           | Philippine Peso                     |
| PKR           | Pakistani Rupee                     |
| PLN           | Polish Zloty                        |
| PYG           | Paraguayan Guarani                  |
| QAR           | Qatari Rial                         |
| RON           | Romanian Leu                        |
| RSD           | Serbian Dinar                       |
| RUB           | Russian Ruble                       |
| RUR           | Old Russian Ruble                   |
| RWF           | Rwandan Franc                       |
| SAR           | Saudi Riyal                         |
| SBDf          | Solomon Islands Dollar              |
| SCR           | Seychellois Rupee                   |
| SDG           | Sudanese Pound                      |
| SDR           | Special Drawing Rights              |
| SEK           | Swedish Krona                       |
| SGD           | Singapore Dollar                    |
| SHP           | Saint Helena Pound                  |
| SLL           | Sierra Leonean Leone                |
| SOS           | Somali Shilling                     |
| SRD           | Surinamese Dollar                   |
| SYP           | Syrian Pound                        |
| SZL           | Swazi Lilangeni                     |
| THB           | Thai Baht                           |
| TJS           | Tajikistani Somoni                  |
| TMT           | Turkmenistani Manat                 |
| TND           | Tunisian Dinar                      |
| TOP           | Tongan Pa’anga                      |
| TRY           | Turkish Lira                        |
| TTD           | Trinidad and Tobago Dollar          |
| TWD           | New Taiwan Dollar                   |
| TZS           | Tanzanian Shilling                  |
| UAH           | Ukrainian Hryvnia                   |
| UGX           | Ugandan Shilling                    |
| USD           | United States Dollar                |
| UYU           | Uruguayan Peso                      |
| UZS           | Uzbekistan Som                      |
| VND           | Vietnamese Dong                     |
| VUV           | Vanuatu Vatu                        |
| WST           | Samoan Tala                         |
| XAF           | CFA Franc BEAC                      |
| XCD           | East Caribbean Dollar               |
| XDR           | Special Drawing Rights              |
| XOF           | CFA Franc BCEAO                     |
| XPF           | CFP Franc                           |
| YER           | Yemeni Rial                         |
| ZAR           | South African Rand                  |
| ZMW           | Zambian Kwacha                      |
| ZWL           | Zimbabwean Dollar                   |

### Supported cryptocurrencies

Here is a list of cryptocurrencies than can be used in Logic Sheet’s cryptocurrency exchange rates function.

| Currency code | Currency name                    |
| ------------- | -------------------------------- |
| 1ST           | FirstBlood                       |
| 2GIVE         | GiveCoin                         |
| 808           | 808Coin                          |
| ABT           | ArcBlock                         |
| ABY           | ArtByte                          |
| AC            | AsiaCoin                         |
| ACT           | Achain                           |
| ADA           | Cardano                          |
| ADT           | adToken                          |
| ADX           | AdEx                             |
| AE            | Aeternity                        |
| AEON          | Aeon                             |
| AGI           | SingularityNET                   |
| AGRS          | IDNI-Agoras                      |
| AI            | POLY-AI                          |
| AID           | AidCoin                          |
| AION          | Aion                             |
| AIR           | AirToken                         |
| AKY           | Akuya-Coin                       |
| ALIS          | ALIS                             |
| AMBER         | AmberCoin                        |
| AMP           | Synereo                          |
| AMPL          | Ampleforth                       |
| ANC           | Anoncoin                         |
| ANT           | Aragon                           |
| APPC          | AppCoins                         |
| APX           | APX-Ventures                     |
| ARDR          | Ardor                            |
| ARK           | Ark                              |
| ARN           | Aeron                            |
| AST           | AirSwap                          |
| ATB           | ATBCoin                          |
| ATM           | ATMChain                         |
| ATS           | Authorship                       |
| AUR           | Auroracoin                       |
| AVT           | Aventus                          |
| B3            | B3Coin                           |
| BAT           | Basic-Attention-Token            |
| BAY           | BitBay                           |
| BBR           | Boolberry                        |
| BCAP          | BCAP                             |
| BCC           | BitConnect                       |
| BCD           | Bitcoin-Diamond                  |
| BCH           | Bitcoin-Cash                     |
| BCN           | Bytecoin                         |
| BCPT          | BlockMason-Credit-Protocol-Token |
| BCX           | BitcoinX                         |
| BCY           | BitCrystals                      |
| BDL           | Bitdeal                          |
| BEE           | Bee-Token                        |
| BELA          | BelaCoin                         |
| BET           | DAO-Casino                       |
| BFT           | BF-Token                         |
| BIS           | Bismuth                          |
| BITB          | BitBean                          |
| BITBTC        | BitBTC                           |
| BITCNY        | BitCNY                           |
| BITEUR        | BitEUR                           |
| BITGOLD       | BitGOLD                          |
| BITSILVER     | BitSILVER                        |
| BITUSD        | BitUSD                           |
| BIX           | Bibox-Token                      |
| BLITZ         | Blitzcash                        |
| BLK           | Blackcoin                        |
| BLN           | Bolenum                          |
| BLOCK         | Blocknet                         |
| BLZ           | Bluzelle                         |
| BMC           | Blackmoon-Crypto                 |
| BNB           | Binance-Coin                     |
| BNT           | Bancor-Network-Token             |
| BNTY          | Bounty0x                         |
| BOST          | BoostCoin                        |
| BOT           | Bodhi                            |
| BQ            | bitqy                            |
| BRD           | Bread                            |
| BRK           | Breakout-Coin                    |
| BRX           | Breakout-Stake                   |
| BTA           | Bata                             |
| BTC           | Bitcoin                          |
| BTCD          | BitcoinDark                      |
| BTCP          | Bitcoin-Private                  |
| BTG           | Bitcoin-Gold                     |
| BTM           | Bitmark                          |
| BTS           | BitShares                        |
| BTSR          | BTSR                             |
| BTX           | Bitcore                          |
| BURST         | Burstcoin                        |
| BUSD          | Binance-USD                      |
| BUZZ          | BuzzCoin                         |
| BYC           | Bytecent                         |
| BYTOM         | Bytom                            |
| C20           | Crypto20                         |
| CANN          | CannabisCoin                     |
| CAT           | BlockCAT                         |
| CCRB          | CryptoCarbon                     |
| CDT           | Blox                             |
| CFI           | Cofound-it                       |
| CHAT          | ChatCoin                         |
| CHIPS         | Chips                            |
| CLAM          | Clams                            |
| CLOAK         | CloakCoin                        |
| CMP           | Compcoin                         |
| CMT           | CyberMiles                       |
| CND           | Cindicator                       |
| CNX           | Cryptonex                        |
| COFI          | CoinFi                           |
| COSS          | COSS                             |
| COVAL         | Circuits-Of-Value                |
| CRBIT         | CreditBIT                        |
| CREA          | CreativeCoin                     |
| CREDO         | Credo                            |
| CRW           | Crown                            |
| CSNO          | BitDice                          |
| CTR           | Centra                           |
| CTXC          | Cortex                           |
| CURE          | CureCoin                         |
| CVC           | Civic                            |
| DAI           | Dai                              |
| DAR           | Darcrus                          |
| DASH          | Dash                             |
| DATA          | DATAcoin                         |
| DAY           | Chronologic                      |
| DBC           | DeepBrain-Chain                  |
| DBIX          | DubaiCoin                        |
| DCN           | Dentacoin                        |
| DCR           | Decred                           |
| DCT           | DECENT                           |
| DDF           | Digital-Developers-Fund          |
| DENT          | Dent                             |
| DFS           | DFSCoin                          |
| DGB           | DigiByte                         |
| DGC           | Digitalcoin                      |
| DGD           | DigixDAO                         |
| DICE          | Etheroll                         |
| DLT           | Agrello-Delta                    |
| DMD           | Diamond                          |
| DMT           | DMarket                          |
| DNT           | district0x                       |
| DOGE          | DogeCoin                         |
| DOPE          | DopeCoin                         |
| DOT           | Polkadot                         |
| DRGN          | Dragonchain                      |
| DTA           | Data                             |
| DTB           | Databits                         |
| DYN           | Dynamic                          |
| EAC           | EarthCoin                        |
| EBST          | eBoost                           |
| EBTC          | eBTC                             |
| ECC           | ECC                              |
| ECN           | E-coin                           |
| EDG           | Edgeless                         |
| EDO           | Eidoo                            |
| EFL           | Electronic-Gulden                |
| EGC           | EverGreenCoin                    |
| EKT           | EDUCare                          |
| ELA           | Elastos                          |
| ELEC          | Electrify.Asia                   |
| ELF           | aelf                             |
| ELIX          | Elixir                           |
| EMB           | Embercoin                        |
| EMC           | Emercoin                         |
| EMC2          | Einsteinium                      |
| ENG           | Enigma                           |
| ENJ           | Enjin-Coin                       |
| ENRG          | EnergyCoin                       |
| EOS           | EOS                              |
| EOT           | EOT-Token                        |
| EQT           | EquiTrader                       |
| ERC           | EuropeCoin                       |
| ETC           | Ethereum-Classic                 |
| ETH           | Ethereum                         |
| ETHD          | Ethereum-Dark                    |
| ETHOS         | Ethos                            |
| ETN           | Electroneum                      |
| ETP           | Metaverse-Entropy                |
| ETT           | EncryptoTel                      |
| EVE           | Devery                           |
| EVX           | Everex                           |
| EXCL          | ExclusiveCoin                    |
| EXP           | Expanse                          |
| FCT           | Factom                           |
| FLDC          | FoldingCoin                      |
| FLO           | FlorinCoin                       |
| FLT           | FlutterCoin                      |
| FRST          | FirstCoin                        |
| FTC           | Feathercoin                      |
| FUEL          | Etherparty                       |
| FUN           | FunFair                          |
| GAM           | Gambit                           |
| GAME          | GameCredits                      |
| GAS           | Gas                              |
| GBG           | Golos Gold                       |
| GBX           | GoByte                           |
| GBYTE         | Byteball                         |
| GCR           | GCRCoin                          |
| GEO           | GeoCoin                          |
| GLD           | GoldCoin                         |
| GNO           | Gnosis-Token                     |
| GNT           | Golem-Tokens                     |
| GOLOS         | Golos                            |
| GRC           | Gridcoin                         |
| GRT           | Graph                            |
| GRS           | Groestlcoin                      |
| GRWI          | Growers-International            |
| GTC           | Game                             |
| GTO           | Gifto                            |
| GUP           | Guppy                            |
| GVT           | Genesis-Vision                   |
| GXS           | GXShares                         |
| HBN           | HoboNickels                      |
| HEAT          | HEAT                             |
| HMQ           | Humaniq                          |
| HPB           | High-Performance-Blockchain      |
| HSR           | Hshare                           |
| HUSH          | Hush                             |
| HVN           | Hive                             |
| HXX           | HexxCoin                         |
| ICN           | ICONOMI                          |
| ICX           | ICON                             |
| IFC           | Infinitecoin                     |
| IFT           | investFeed                       |
| IGNIS         | Ignis                            |
| INCNT         | Incent                           |
| IND           | Indorse-Token                    |
| INF           | InfChain                         |
| INK           | Ink                              |
| INS           | INS-Ecosystem                    |
| INSTAR        | Insights-Network                 |
| INT           | Internet-Node-Token              |
| INXT          | Internxt                         |
| IOC           | IOCoin                           |
| ION           | ION                              |
| IOP           | Internet-of-People               |
| IOST          | IOStoken                         |
| IOTA          | IOTA                             |
| IOTX          | IoTeX                            |
| IQT           | Iquant-Chain                     |
| ITC           | IoT-Chain                        |
| IXC           | iXcoin                           |
| IXT           | InsureX                          |
| J8T           | JET8                             |
| JNT           | Jibrel-Network                   |
| KCS           | KuCoin                           |
| KICK          | KickCoin                         |
| KIN           | KIN                              |
| KMD           | Komodo                           |
| KNC           | Kyber-Network                    |
| KORE          | KoreCoin                         |
| LBC           | LBRY-Credits                     |
| LCC           | Litecoin-Cash                    |
| LEND          | EthLend                          |
| LEV           | Leverj                           |
| LGD           | Legends-Room                     |
| LINDA         | Linda                            |
| LINK          | ChainLink                        |
| LKK           | Lykke                            |
| LMC           | LoMoCoin                         |
| LOCI          | LOCIcoin                         |
| LOOM          | Loom-Token                       |
| LRC           | Loopring                         |
| LSK           | Lisk                             |
| LTC           | Litecoin                         |
| LUN           | Lunyr                            |
| MAID          | MaidSafeCoin                     |
| MANA          | Decentraland                     |
| MAX           | Maxcoin                          |
| MBRS          | Embers                           |
| MCAP          | MCAP                             |
| MCO           | Monaco                           |
| MDA           | Moeda-Loyalty-Points             |
| MEC           | Megacoin                         |
| MED           | MediBlock                        |
| MEME          | Memetic                          |
| MER           | Mercury                          |
| MGC           | MergeCoin                        |
| MGO           | MobileGo                         |
| MINEX         | Minex                            |
| MINT          | Mintcoin                         |
| MITH          | Mithril                          |
| MKR           | Maker                            |
| MLN           | Melon                            |
| MNE           | Minereum                         |
| MNX           | MinexCoin                        |
| MOD           | Modum                            |
| MONA          | MonaCoin                         |
| MRT           | Miners-Reward-Token              |
| MSP           | Mothership                       |
| MTH           | Monetha                          |
| MTN           | MedToken                         |
| MUE           | MonetaryUnit                     |
| MUSIC         | Musicoin                         |
| MYB           | MyBit-Token                      |
| MYST          | Mysterium                        |
| MZC           | Mazacoin                         |
| NAMO          | Namocoin                         |
| NANO          | Nano                             |
| NAS           | Nebulas-Token                    |
| NAV           | Nav-Coin                         |
| NBT           | NuBits                           |
| NCASH         | Nucleus-Vision                   |
| NDC           | NeverDie-Coin                    |
| NEBL          | Neblio                           |
| NEO           | NEO                              |
| NEOS          | NeosCoin                         |
| NET           | Nimiq                            |
| NLC2          | NoLimitCoin                      |
| NLG           | Gulden                           |
| NMC           | Namecoin                         |
| NMR           | Numeraire                        |
| NOBL          | NobleCoin                        |
| NOTE          | DNotes                           |
| NPXS          | Pundi-X-Token                    |
| NSR           | NuShares                         |
| NTO           | Fujinto                          |
| NULS          | Nuls                             |
| NVC           | Novacoin                         |
| NXC           | Nexium                           |
| NXS           | Nexus                            |
| NXT           | Nxt                              |
| OAX           | openANX                          |
| OBITS         | Obits                            |
| OCL           | Oceanlab                         |
| OCN           | Odyssey                          |
| ODEM          | ODEM                             |
| ODN           | Obsidian                         |
| OF            | OFCOIN                           |
| OK            | OKCash                           |
| OMG           | OmiseGo                          |
| OMNI          | Omni                             |
| ONION         | DeepOnion                        |
| ONT           | Ontology                         |
| OPT           | Opus                             |
| OST           | Simple-Token                     |
| PART          | Particl                          |
| PASC          | PascalCoin                       |
| PAY           | TenX                             |
| PBL           | Pebbles                          |
| PBT           | Primalbase-Token                 |
| PFR           | Payfair                          |
| PING          | CryptoPing                       |
| PINK          | Pinkcoin                         |
| PIVX          | PIVX                             |
| PIX           | Lampix                           |
| PLBT          | Polybius                         |
| PLR           | Pillar                           |
| PLU           | Pluton                           |
| POA           | POA-Network                      |
| POE           | Poet                             |
| POLY          | Polymath                         |
| POSW          | PoSW-Coin                        |
| POT           | PotCoin                          |
| POWR          | Power-Ledger                     |
| PPC           | Peercoin                         |
| PPT           | Populous                         |
| PPY           | Peerplays                        |
| PRG           | Paragon-Coin                     |
| PRL           | Oyster-Pearl                     |
| PRO           | Propy                            |
| PST           | Primas                           |
| PTC           | Pesetacoin                       |
| PTOY          | Patientory                       |
| PURA          | Pura                             |
| QASH          | QASH                             |
| QAU           | Quantum                          |
| QLC           | Qlink                            |
| QRK           | Quark                            |
| QRL           | Quantum-Resistant-Ledger         |
| QSP           | Quantstamp                       |
| QTL           | Quatloo                          |
| QTUM          | Qtum                             |
| QWARK         | Qwark                            |
| R             | Revain                           |
| RADS          | Radium                           |
| RAIN          | Condensate                       |
| RBIES         | Rubies                           |
| RBX           | Ripto-Bux                        |
| RBY           | RubyCoin                         |
| RCN           | Ripio-Credit-Network             |
| RDD           | ReddCoin                         |
| RDN           | Raiden-Network-Token             |
| REC           | Regalcoin                        |
| RED           | Redcoin                          |
| REP           | Augur                            |
| REQ           | Request-Network                  |
| RHOC          | RChain                           |
| RIC           | Riecoin                          |
| RISE          | Rise                             |
| RLC           | RLC-Token                        |
| RLT           | RouletteToken                    |
| RPX           | Red-Pulse                        |
| RRT           | Recovery-Right-Tokens            |
| RUFF          | Ruff                             |
| RUP           | Rupee                            |
| RVT           | Rivetz                           |
| SAFEX         | SafeExchangeCoin                 |
| SALT          | Salt                             |
| SAN           | Santiment-Network-Token          |
| SBD           | Steem-Dollars                    |
| SBTC          | Super-Bitcoin                    |
| SC            | Siacoin                          |
| SEELE         | Seele                            |
| SEQ           | Sequence                         |
| SHIFT         | SHIFT                            |
| SIB           | SIBCoin                          |
| SIGMA         | SIGMAcoin                        |
| SIGT          | Signatum                         |
| SJCX          | Storjcoin-X                      |
| SKIN          | SkinCoin                         |
| SKY           | Skycoin                          |
| SLR           | SolarCoin                        |
| SLS           | SaluS                            |
| SMART         | SmartCash                        |
| SMT           | SmartMesh                        |
| SNC           | SunContract                      |
| SNGLS         | SingularDTV                      |
| SNM           | SONM                             |
| SNRG          | Synergy                          |
| SNT           | Status-Network-Token             |
| SOC           | All-Sports                       |
| SOUL          | Phantasma                        |
| SPANK         | SpankChain                       |
| SPC           | SpaceChain                       |
| SPHR          | Sphere                           |
| SPR           | SpreadCoin                       |
| SNX           | Synthetix-Network-Token          |
| SRN           | Sirin-Labs-Token                 |
| START         | Startcoin                        |
| STEEM         | Steem                            |
| STK           | STK-Token                        |
| STORJ         | Storj                            |
| STORM         | Storm                            |
| STQ           | Storiqa                          |
| STRAT         | Stratis                          |
| STX           | Stox                             |
| SUB           | Substratum                       |
| SWFTC         | SwftCoin                         |
| SWIFT         | Bitswift                         |
| SWT           | Swarm-City                       |
| SYNX          | Syndicate                        |
| SYS           | SysCoin                          |
| TAAS          | Taas                             |
| TAU           | Lamden                           |
| TCC           | The-ChampCoin                    |
| TFL           | True-Flip                        |
| THC           | HempCoin                         |
| THETA         | Theta-Token                      |
| TIME          | Time                             |
| TIX           | Blocktix                         |
| TKN           | TokenCard                        |
| TKR           | Trackr                           |
| TKS           | Tokes                            |
| TNB           | Time-New-Bank                    |
| TNT           | Tierion                          |
| TOA           | ToaCoin                          |
| TRAC          | OriginTrail                      |
| TRC           | Terracoin                        |
| TRCT          | Tracto                           |
| TRIG          | Triggers                         |
| TRST          | Trustcoin                        |
| TRUE          | TrueChain                        |
| TRUST         | TrustPlus                        |
| TRX           | Tronix                           |
| TUSD          | TrueUSD                          |
| TX            | TransferCoin                     |
| UBQ           | Ubiq                             |
| UKG           | UnikoinGold                      |
| ULA           | Ulatech                          |
| UNB           | UnbreakableCoin                  |
| UNITY         | SuperNET                         |
| UNO           | Unobtanium                       |
| UNY           | Unity-Ingot                      |
| UP            | UpToken                          |
| URO           | Uro                              |
| USDT          | Tether                           |
| UTK           | UTrust                           |
| VEE           | BLOCKv                           |
| VEN           | VeChain                          |
| VERI          | Veritaseum                       |
| VIA           | Viacoin                          |
| VIB           | Viberate                         |
| VIBE          | Vibe                             |
| VIVO          | VIVO                             |
| VOISE         | Voise                            |
| VOX           | Voxels                           |
| VPN           | VPNCoin                          |
| VRC           | Vericoin                         |
| VRM           | Verium                           |
| VRS           | Veros                            |
| VSL           | vSlice                           |
| VTC           | Vertcoin                         |
| VTR           | vTorrent                         |
| WABI          | WaBi                             |
| WAN           | Wanchain                         |
| WAVES         | Waves                            |
| WAX           | Wax-Token                        |
| WCT           | Waves-Community                  |
| WDC           | WorldCoin                        |
| WGO           | WavesGo                          |
| WGR           | Wagerr                           |
| WINGS         | Wings                            |
| WPR           | WePower                          |
| WTC           | Walton                           |
| WTT           | Giga-Watt-Token                  |
| XAS           | Asch                             |
| XAUR          | Xaurum                           |
| XBC           | Bitcoin-Plus                     |
| XBY           | XtraBYtes                        |
| XCN           | Cryptonite                       |
| XCP           | Counterparty                     |
| XDN           | DigitalNote                      |
| XEL           | Elastic                          |
| NEM           | NEM                              |
| XHV           | Haven-Protocol                   |
| XID           | Sphere-Identity                  |
| XLM           | Stellar                          |
| XMG           | Magi                             |
| XMR           | Monero                           |
| XMT           | Metal                            |
| XMY           | Myriadcoin                       |
| XPM           | Primecoin                        |
| XRL           | Rialto                           |
| XRP           | Ripple                           |
| XSPEC         | Spectrecoin                      |
| XST           | Stealthcoin                      |
| XTZ           | Tezos                            |
| XUC           | Exchange-Union                   |
| XVC           | Vcash                            |
| XVG           | Verge                            |
| XWC           | WhiteCoin                        |
| XZC           | ZCoin                            |
| XZR           | ZrCoin                           |
| YEE           | Yee                              |
| YOYOW         | YOYOW                            |
| ZCC           | ZcCoin                           |
| ZCL           | Zclassic                         |
| ZCO           | Zebi                             |
| ZEC           | Zcash                            |
| ZEN           | ZenCash                          |
| ZET           | Zetacoin                         |
| ZIL           | Zilliqa                          |
| ZLA           | Zilla                            |
| ZRX           | 0x                               |


# Page 1

Question title Question content Answer

how is this better than using an existing automation tool? Any automation tool (zapier make activepieces etc) will have SHeets connection with calculation options.  Other than saving us from opening a separate tab for that, how is this better?  It looks like there are limited options in here and also gsheets is always evolving, so I'm curious if this has a sustainable advantage.  Also data privacy wise, what assurances do we have?  Thanks! Hi, the difference between Logic Sheets and the alternatives you mentioned is that LS is centered around GSheets and it has more GSheets-specific actions and triggers. LS is also evolving all the time. We currently don't support calculations because it can be done in GSheets but we will add this to our actions. Regarding data privacy, LS only runs in your GSheets and your data never leaves GSheets. Think of it as a piece of software that runs in your local device. We don't store any data already in your Google Sheets. Thanks!

Can I schedule something like webhook trigger 1 row of the sheet per hour using Logic Sheet And then the next hour, does it trigger the next row? Hi, yes, this is possible. There might be some extra setup, you need to reverse the order of the spreadsheet manually so that the latest data to be sent is always in the bottom. YOu can set up an hourly trigger and send the last row to a webhook using our HTTP request action, then use the "Remove last row" action to remove the last row so that the next hour the next row is the last row, and will be sent to webhook. This will remove data in your spreadsheet so you'd better backup the sheet before the automation runs.

Grist ? Hi. Can you make a good integration with Grist. It's very popular and very advanced database administration and management software, Google sheets alternative. Hi thanks for your feature request. We are currently working on integrating with as many services as possible and we will look into Grist asap. Thanks!

Gmail or Workspace account do I need a Google Workspace email account, or can I use a standard Gmail account? Asking cos I know your other tool required a Workspace plan. Thanks. Hi, yes you can use a standard Gmail account for Logic Sheet and purcahse the individual plan. Google Workspace is only required for the Team and Enterprise plans. The individual plan has the full features of Logic Sheet but it only contains one license. The Team and Enterprise plans contain multiple licenses for users in the same Google Workspace.

Data parse from email and forward? Can I identify a data value within a received email - an email address - and then create an automation - forward the received email to that email - with this app? HI, thanks for your question. Logic Sheet is capable of sending emails from Google Sheets. It however can't access your Gmail because it only runs in Google Sheets. So it can't parse values received by your email. Please let me know if you hare more questions! Wei

null telegram, noysi or ninjapipe\nI see whatsapp is in your status, do your consider also integrate telegram or noysi for sending messages (like to slack) and/or integrate with ninjapipe.? Hi, yes, we will try to integrate Telegram in the future.

awesome one more question do you consider noysi as integration. it is as slack, but a LTD an - as i think much better. unfortunatelly only the big ones (pabbly, zapir) do have direct connections to noysi. I know you focus on the most useful application, but since you are on platform and already have slack integrated, it could be interesting for you.!? :)

null could i do anything with you software which i cant via pabbly/activepieces/...?\nI work a lot with google sheets, but i am just curious if would be a benefit for me. With activepieces i just "ask" if something changed and if yes if it changed to a specific pattern and then i do something. so what can your software do more of?\nAdditionally do you already have an implementation for activepieces and if not do you offer an api and the code for it so we just could send an http request in activepieces.? Hi, Logic Sheet is an automation tool designed for Google Sheets and it's actions and triggers are centered around Google Sheets capabilities, such as sheet edit, form submit, and so on. It can perform actions such as sending email/Slack, update rows or cells in Google Sheets. It is also capable of sending HTTP Requests so if activepieces has an API, it can be automated by Logic Sheet. Best, Wei

null For Tier 1, it's one account but any number of sheets within that account? Hi yes, the tier 1 license is for on Google account and there is no limit on how many spreadsheets you use Logic Sheet in.

null I have created My Stock portfolio sheet in Google sheet.\n\nIs it possible to develop a condition on the Entire column L (Which represents per cent UP/Down from Purchase price), for example, if the Cell value of L26 is updated with 12 then the automation tool will send a mail with the following details\n\nSubject: {C26} up by {L26}\nBody:\n{C26} is Up by {L26}% from your purchase price of {E26}. its CMP is {F26} and running profit is {G26}.\n\nColumn Details are as Follows:\nColumn : Data\nA : Serial Number\nB: Bought Date\nC: Stock Name\nD: Quantity Purchased\nE: Purchase Price\nF: Current Market Price of Stock\nG: Profit /Loss of stock\n\nThe condition will Check for the Entire column L and the second condition would be that the D column is Greater than Zero. Hi thanks for your question! Yes, that is exactly what Logic Sheet is built for. Except that instead of using {C26}, we use {{Range C26}} to refer to the value of cell C26 in the sheet. The condition can also be achieved by setting the condition to "When cell L26 is 12" in this case. You can try to set the automation up after redeeming your code. You can also contact us for help via our live chat. Wei

null Is it customisable? can it be connected to Notion agency kit? Hi, yes you can connect Google Sheets to Notion using Logic Sheet. Notion agency kit is Notion templates so you can connect to it. Logic Sheet supports sending data from Google Sheets to Notion when an automation is triggered.

null can i use this for send data as a webhook to whatsapp gateway unofficial platform? Hi, thanks for your question. Yes, you can send webhooks to API endpoints. This can be done via our HTTP Request action(sending webhook is essentially sending a GET or POST HTTP Request). I have tested WHAPI to send WhatsApp messages before and it works perfectly. Best, Wei

Hi. What app whapi you mean? Is it <https://whapi.id> or <https://whapi.cloud>?

null Can I track and add events on public read google sheets which are not located in my google account but shared with me? Hi thanks for your question. You can track events in Google Sheets that are shared with you, but you need to have the "editor" access to create automations and track events in the sheet. The read permission is not sufficient for tracking events. Let me know if you have more questions. Wei

null Does tier 1 support unlimited google sheets (with only one gmail account?) Just to make sure I understood correctly. Hi, thanks for your question. Yes, it supports unlimited Google Sheets files for one Google account. There is no limit on how many files you can use Logic Sheet in. Wei

null I want to create automations for clients.  Some of the sheets that I am working on have been created by a different author (in client's company), but share with me.  Can I use this automation for shared sheets? Hi thanks for your question. Yes, you can create automations using Logic Sheet as long as you have editor access to the spreadsheet file shared with you. It is recommended that the owner of the spreadsheet installs Logic Sheet but it's not required. Only the user who creates the automation needs a Logic Sheet license.

If you no longer want the original person who shared the Google Sheet to have ownership or access, you can make a copy of the file. \n\nThen you will own the copy and control access.\n\nThis would become your new working version.

null We are collecting contact details from google Forms, can we use this tool to add them to Google Contats ? Hi yes, this is made possible with our Google Forms Received trigger and the HTTP Request action. With this automaiton, you can trigger an automaiton everytime when a Google Form response is received. Then in the action, you can use HTTP Request to send the form data to Google People API to create a contact. You can read the documentation here <https://developers.google.com/people/api/rest/v1/people/createContact.\nThis> may need a little bit of API knowledge to set up, you can reach out to me when you have redeemed your license. I will help you set it up.\nWei

null Glad to see you back here. I just want to understand the new stacking option. I have already purchased a code before and linked it to my personal Gmail account. If I stack 2 or more codes, will I be able to use them with additional Gmail accounts? Can I install them on other personal Gmail accounts or on those of my team?\n\nI'm confused because you mentioned that the user should be from the same Google Workspace organization. However, many of us, including myself, do not use Google Workspace. We use Zoho and other CRM tools for organization, and Yandex for business emails. Nonetheless, most of us have free Google accounts for Google Sheets. How can we utilize the stacking feature to use Logic Sheet with my team?\n\nThank you. Hi thanks for your question. I understand the situation you mentioned. For your specific case, if you already have an individual license, by stacking 1 more code you will be upgraded to the 5-user Team plan, and by stacking 2 more codes you will be upgraded to the unlimited users Enterprise plan. Since Google Sheets runs in Google Workspace, we rely on the Google Workspace Organization to verify user licenses, and to avoid abuse of your license system. But if you don's use Google Workspace, here is what we normally do: \n\nIf you have the Team plan and you don't use Google Worksapce,  please send us 5 email address that you want to license, stating that they all work in your organization that thaty they are not external users. We will add them to your license.\n\nIf you have the Enterprise plan and you don't use Google Worksapce,  please send us up to 30 email address that you want to license, stating that they all work in your organization that thaty they are not external users. We will add them to your license.\n\nThank you very much.\n\nWei

Thank you for quick and clear response. I believe I do understand your concern as well. Idea is to avoid abuse by reselling license to other random users etc. which completely makes sense. In situations like me, I can extend my team up to 30 emails for enterprise version. For my current needs, I believe 2 stacks should be sufficient. But since I love this, may be I should stack total 3 codes.

null Hi does it have workflow triggers such as email opened, replied, read, clicked etc? Hi thanks for your question. Logic Sheet works in Google Sheets, so it cannot monitor actions taken in Gmail. The only Gmail action Logic Sheet takes is to send an email when the automation is triggered in Google Sheets. Thanks. Wei

null I'm looking at importing orders and email lists from Shopify to Google sheets automatically and also data migration from one Shopify app to another. Are these actions possible? HI thanks for your question. Logic Sheet can only send Google Sheets data to other apps. But we have developed another tool Uniquery(<https://uniquery.io/>) that allows you to import data from third-party data sources including Shopify. It's not on platform but we do offer a special offer for platform customers. Please reach out to me if you have purcahsed Logic Sheet and I will send you the offer. Wei

null i have data in 2 Google sheet.\nCan it help to synchronise the data between two Google sheet under same account?\nlike if based on certain set of condition data is on main sheet it is updated on sheet a,some in sheet b and whenever there is update in sheet a or b it is updated in main sheet? Hi, this is possible with the "spreadsheet is edited" trigger with monitors updates in all tabs and then you need to set conditions in each action to monitor if the update happens in Sheet A or Sheet B, then the action can be set a new value or insert a new row in the main sheet. Please reach out to us via our live chat when you try to set up the workflow and I will provide more help based on details of your spreadsheet setup. Wei

Hi, to piggy-back on this question, what if we have 10 sheets from different sources: 1 parent + many sheets e.g. child a + child b and so on, can we merge specific changes and updates from the child to the parent master by columns/rows and control the data pulled in and (assume then set up the triggers, like emails and slack or Trello or whatever...) correct assumption what this can do?

null Please add integration to OpenRouter API, so that we can access dozen of other LLMs easily. Thank you very much!\nAPI Docs: <https://openrouter.ai/docs/quick-start> Hi, thanks for your question. Logic Sheet is not an AI tool. I assume you are inquerying about another of deal Power Formulas, please check it here\nWei

null Will all UTILITIES features in docs be supported currently? \nAs it's say UTILITIES (DEPRECATED) in help center, thank you.\neg. LogicSheetAPI() and LogicSheetMySQL(), LogicSheetImportWebElement(), Finance HI, I'm sorry for the confusion. The Utilites featuers are still available and we don't have plans to take them down. These featuers are also maintained and supported. Thanks, Wei.

null Can Logic Sheet be triggered when a row is added through an API? I use ManyChat, which integrates with Google Sheets. I want that, when ManyChat inserts a new row into the sheet, an HTTP POST request is made to another tool, sending some data from that newly inserted row in this request. Hi, thanks for your question. Yes, Logic Sheet has a trigger called "A new row is inserted(by an app)", which will trigger automations when a new row is added by an external app, including APIs. The workflow you described is perfectly doable with Logic Sheet. Wei

null Is it possible to Download Facebook leads automatic Hi thanks for your questions. Logic Sheet is not designed to download data into Google Sheets. But you can our new product Uniquery, which is capable of importing marketing data into Google Sheets automatically. Wei

null Hi, is it possible to upload and/or update products (with images, categories, descriptions, etc.) from Google Sheets to WooCommerce using LogicSheets? If not, do you have this on your roadmap? Hi, this is not what Logic Sheet is designed to do, it is an automation tool for you to automate workflows in Google Sheets. You can try to use the LogicSheetAPI formula to do this to send data to WooCommerce, I think this is possible but you need some knowledge of WP API. Thanks for your feedback.

Thanks for your quick response! Ah, I understand, makes sense! Still, we might look into it to see if it's possible.

null Do we need Google workspace for this or free Google account (Gmail) is sufficient for logic sheet,? Hi, you can use Logic Sheet both with free Gmail accounts and Google Workspace accounts. There is no limit on what type of accounts you have. The team and enterprise plans are for Google Workspace organizations tho.

null Hi there. If my google workspace has 1 domain and some  alias domain, could alias domain email users be counted unlimited in Tier4? Hi, yes you can do that. You can reach out to us after you redeemed your enteprise plan and we will add your alia domains to your enterprise license for free. Wei

null Hi Wei, this tool looks very interesting to me. \nCan we take prospect information from Wordpress website form (Elementor form/ Formaloo form / Google form / LeadPal) to google sheet and trigger a welcome/onbaording email via Vbout /Acumbamail /Mailer lite\nCan it add user to group in mailerlite using name/ email from Google sheets?\nThank you! Hi, this is possible with Google Forms, because Google Forms can send the form data directly to Google Sheets, then you can use Logic Sheet to trigger automations based on form submisssions. In the automation you can trigger HTTP Requests to send API calls to services like Vbout and Mailer lite to send welcome emails. Via API, it can also add user to a group in mailer lite using email and name data stored in Google Sheets. Wei

null I create templates in google sheets, when someone makes a copy of them and completes part of the template if I wanted it to trigger an email, is it possible to do that from each copied version? Hi, copying a template can't trigger an automation. Google Sheets doesn't support this kind of trigger. Currently the only available triggers are based on edits, time, or for submission.\n\nWei

null I'd like to use LS in conjunction with another extension, SheetsFinance, but I'm concerned that they will conflict with one another? Can these two extensions play well together? Hi thanks for your question. Currently there is no known conficts of Logic Sheet with other Google Sheets extensions, and there is no reason why there will be a conflict. So please don't worry about this. Also, if there is any technical issues when you use Logic Sheet you can always reach out to us and we will fix it ASAP.

null Hi Wei, Are you planning to connect Logicsheet with Google Chat? If yes, when can we expect it to be ready? Thank you! Hi, this integration is not on our road map yet but we can add it. May I know what is your use case and what kind of action do you want to automate?\nThanks

We don't use Slack; we prefer using the Google platform exclusively and use Google Chat for our operational communications. It would be great if we could receive notifications in our Google Chat spaces.

null Let's say that on our site we are running a form to collect contact info and that info is sent to our google worksheet.\n\nIs it possible for this tool to see a new row was built when a new lead comes in- then we send the lead through a webhook to our email marketing software?\n\nIs this possible? Hi, yes, this is a very popular use case of Logic Sheet. You can use the HTTP request action to send data to your email marketing tool. May I know what email marketing tool you are using? We may have an already made integration or template.

null Hi Wei,\n\nIs Build part on the deal ?\nhttps\://logicsheet.co/build\n\nThank you Hi, this is not part of the deal. Logic Sheet Build is our service where we offer custom coding to clients and we charge customers by hour(€75 per hour). This is more like a consulting service. It just shares Logic Sheet’s brand name and operated by LogicLabs OÜ(the company that owns Logic Sheet). I hope this is clear. Let me know if you have more questions!

null Can I store links, images, PDfs, attachments, video files, audio files inside your tool and it triggers to send it via email or SMS like when people fill out a form or purchase a product (digital) or request via SMS/email? I have full-stacked PowerFormula and Magic sheet.    Thinking I have overlap have PowerFormula and MagicSheet.  Trying to decide which is better for digital product sending and article creation. Your  product different how?  Thanks Hi thanks for your question, but this is the listing page for Logic Sheet, not Power Formulas. I understand your concerns tho, I'd say Power Formulas now supports all OpenAI models and supports connection to any API and SQL databases. Also, regarding your question about sending digital products after people fill out a form, this is possible with Logic Sheet. We already have users doing so. But the sending email action cannot include attachments like PDFs or Video files. It is only possible if you store them somewhere else and send the link via email. It is also possible to send emails via APIs like SendGrid that supports attachment, but it requires knowledge of API connection. Let me know if you have more questions! Wei

null What is the future of Logic Sheet? How do you plan to grow? I would like to invest but if I invest big I would hate to loose my money because the company went out of business.  \nDoes you tool place everything on my end? \nAre you housing anything that would increase your server cost do to the unlimited LTD? Hi, great questions. Logic Sheet is a software company, and we’re committed to the development of a diversified range of software products within the Google Workspace ecosystem. Our current product lines have not only been well-received but are also generating profits, indicating our positive trajectory and long-term stability.\n\nOur strategy for growth includes:\n\n- Expanding Product Lines: We are continually working on new tools and features that integrate with Google Workspace. Our goal is to simplify and enhance productivity for businesses of all sizes.\n- Custom Solutions: Through services like Logic Sheet Build, we offer bespoke coding solutions tailored to individual customer needs, further establishing us as a go-to resource within this ecosystem.\n- Customer-Centric Development: We actively seek and incorporate user feedback to ensure our products remain relevant and valuable.\n\nRegarding your concerns about the operating costs. Logic Sheet operates primarily on Google Apps Script, hosted by Google Sheets. This setup is akin to running software on your local device, significantly reducing hosting and operational costs on our end. While we do utilize some microservices on AWS to support Logic Sheet, these costs are manageable and do not scale uncontrollably with user growth. This cost-effective model allows us to offer a sustainable and profitable service.\n\nI understand your concerns about server costs, especially concerning our Unlimited Deal. Rest assured, the majority of Logic Sheet’s functionalities run on Google’s infrastructure, ensuring that we don’t incur substantial server expenses. This model helps us maintain competitive pricing and longevity in our services without compromising on quality or stability.\n\nPlease let me know if you have more questions or concerns!\n\nWei

null Can you use this to create a macro or to separate data in the columns? I get data in three different formats that need to be separated. HI thanks for your questions, but I'm afraid I couldn't understand what is the problem you want to solve. But Logic Sheet cannot be used to separate data into columns. This is a feature that is already provided by Google Sheets. We try to not repeat what Google Sheets already is capable of. But if you have another question, please feel free to reply to this thread. Thanks!

null Hi Wei, this tool looks very interesting. Can it register a user on a specific Lifter LMS (my wordpress course plugin) course using name/ email from Google sheets? \nCan it add subscriber to group in mailerlite using name/ email from Google sheets? \nThank you! Hi, this is only possible if the WP plugin you use supports API connection. For the MailerLite integration, yes, you can connect to it with its API, using Logic Sheet's HTTP Request action. Please see Mailer Lite API docs for more details. <https://developers.mailerlite.com/\nWei>

Hi, this is only possible if the WP plugin you use supports API connection. For the MailerLite integration, yes, you can connect to it with its API, using Logic Sheet's HTTP Request action. Please see Mailer Lite API docs for more details. <https://developers.mailerlite.com/\nWei>

null Can  it link with Monday's? Hi, Monday integration is on our development plan, but currently you can send data to Monday.com via their API. This is very easy to do with our HTTP Request action. Wei

null I’m looking to automate the workflow so that when a new form response is received and a new row is added to a sheet, the sheet will conduct a column sort action by the first column which is the Date field. Is this possible? Hi yes, this is possible. You can use the Form response trigger to trigger the automation and choose the Sort Sheet action. The Sort Sheet action can sort a specific sheet/tab by a column, in ascending or descending orders.

null Can we send sms? Hi you can use the HTTP Request action to send an API request to SMS service providers like Twillo so send SMSs automatically.

null Hi! Can i generate pdfs from a google sheets file? Hi we are developing this feature to generate PDFs from GOogle Sheets and save them in Google Drive or send it as an attachment in emails. It will be available soon. Thanks!

null could I use this tool to automate domain purchase, inbox setup, moving nameservers to cloud flare, setting up dns settings etc. Is this possible? Hi, I don't think this is possible, Logic Sheet mainly focuses on automating workflows in Google Sheets. It doesn't seem that any of these actions happen in Google Sheets. Thanks!

null Hello Wei\_Sheng,\n\nWhat is the response time for messages sent to you through Intercom on your websites? I wrote to you 2 days ago and have not received a response yet.\n\nBest regards,\nFlorence. Hi, the live chat on our website is for existing customers to resolve technical issues. I just checked your message and it's about feature inquiry. Please email <help@logicsheet.co> if you want to inquire about whether your use cases are achievable. Thanks. Wei

null "License unlimited Google Sheets accounts in the same Google Workspace domain"\n\nWhat does this mean? I am ready to buy the Enterprise Plan cos unlimited but what does this mean exactly?\n\nCan anyone explain? Hi, thanks for your question! The Enterprise Plan is for Google Workspaces and it gives all users in one organization access to Logic Sheet. Since Google Workspaces all have domains, the licenses are distributed to all users under the same licensed domain. For example, if a company XYZ has the domain xyz.com and buys the Enterprise Plan, all its employees, for example, <john@xyz.com>, <dave@xyz.com>, will automatically have access to Logic Sheet. Hope this explains! Wei

\
\ <br>

Introduction to Logic Sheet

Manually doing time-consuming and repetitive tasks every day is frustrating. Why not automate the boring stuff and find more time in your life?

<br>

Learn how to use Logic Sheet to save your time and boost productivity by automating repetitive tasks in Google Sheets.

<br>

Set up a single automation workflow, and let Logic Sheet do the work for you. Logic Sheet is a Google Sheets add-on that helps you automate your work. For example, you can set up automation workflows to let Logic Sheet send an email notification or send a Slack message when your spreadsheet is edited.

<br>

What you can do with Logic Sheet Automation:

<br>

Listen to triggers like spreadsheet edits, form submissions, or run automations hourly, daily, or weekly

Set up conditions for each automation workflow

Run automatic automations like sending email/Slack, updating sheet data, Notion, Airtable, or HubSpot etc.

Use merge tags to refer to dynamic data in your message

\ <br>

You can also create automations within one click with our pre-defined templates and recipes.

<br>

Triggers kick off your automation. You can choose from various types of triggers that put your spreadsheets on autopilot.

<br>

Currently, we support the following triggers:

<br>

Time driven: Run automation hourly, daily, weekly, or monthly

<br>

Form submission: Runs the automation when a Google Form submission is received

<br>

On-edit trigger: Runs the automation when the spreadsheet is edited. You can set your automation to listen to events like a certain row, column, or range is edited.

<br>

Webhook: Turn your spreadsheet into a webhook, receive HTTP requests, and trigger automations.

\
\
\
\ <br>

null

Run automations conditionally.

Only run automated workflows when all conditions you set are met.

<br>

You can use dynamic data in conditions. Like, only run the automation when the content in cell A10 is larger than 100, or when the form submission's value contains a certain word.

<br>

null

Run automations conditionally.

If the workflow is triggered, Logic Sheet will run automated actions, like sending an email or a Slack message.

<br>

Actions you can do now:

<br>

Send emails

Send Slack messages

Update your spreadsheet

Update Airtable

Update Notion database

Send contact to Hubspot

Subscribe user to Mailchimp

Grant or remove access to the spreadsheet

Remove rows from the spreadsheet

Refresh formulas

Send HTTP/API requests

\ <br>

Actions coming soon:

<br>

Add Google Calendar event

Update CRMs like Zendesk, Salesforce

Post on social media like Twitter, Facebook, or LinkedIn.

Create tasks in project management tools like Asana or Trello

Generate invoices based on spreadsheet data

Integrate with e-commerce platforms like Shopify or WooCommerce

\ <br>

For more features in the pipeline, please take a look at our product roadmap.

<br>

null

Create automations from templates and recipes.

Simplify your automation journey with Logic Sheet's template gallery, a curated collection of pre-defined templates and recipes designed to cater to a variety of tasks and industries.

<br>

Explore a diverse range of templates tailored for different needs, from project management and data analysis to customer relationship management and beyond. Each template is crafted with industry best practices in mind, ensuring that you can leverage the power of automation without the need for extensive configuration.

<br>

Harness the collective knowledge of the Logic Sheet community and our dedicated customer support through the "Import from Recipe" feature. Share automation recipes with fellow users or import ready-made solutions directly into your Logic Sheet environment.

<br>

Importing automation recipes becomes effortless as you can simply paste the shared recipe, allowing you to replicate proven workflows with just a few clicks. Benefit from the collective expertise of community members and our support team to accelerate your automation projects.

<br>


