Is the Google Sheets to Make app down for anyone else

To anyone interested, I made this code and it is running very dynamically and instantly.

## Google Apps Script Code for Monitoring Spreadsheet Changes
This code monitors changes in a specific column of your Google Sheets and sends the modified row data to a Make webhook.

Step-by-Step Setup Guide:

  • Use Google Sheets “Watch Changes” module
  • Copy the provided webhook URL
  • in google sheets go to Extensions > Apps Script
  • Paste the code above into the editor
  • Make two changes in the code:
  • Change monitoredColumn to the number of the column you want to monitor
  • Paste your Make webhook URL into the webhookUrl variable
  • In the Apps Script editor, click on “Triggers” (clock icon) in the sidebar
  • Configure the trigger for ‘onMake’ in event On Edit
  • Save and finish.

How It Works

  • The code monitors changes in the specified column
  • When a change occurs, it:
    1. Identifies up to which column there are filled headers in row 1
    2. Captures all data from the modified row (from column A to the last column with header)
    3. Instantly sends this data to Make

Important Notes

  • The code uses the first row as a reference to determine which columns to send
  • If you add new columns with headers, the code will automatically include them
  • The trigger must be manually configured for the code to work
  • You can monitor any column by changing the number in monitoredColumn

Code for script:

function onMake(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  
  // CONFIGURATION: Change the column number you want to monitor
  // Example: 1 for column A, 2 for B, 3 for C... 32 for AF
  var monitoredColumn = 32; // <-- CHANGE THIS NUMBER
  
  // CONFIGURATION: Insert your Make (Integromat) webhook
  var webhookUrl = "YOUR_WEBHOOK_HERE"; // <-- PASTE YOUR WEBHOOK HERE
  
  // Check if the change was in the monitored column
  if (range.getColumn() == monitoredColumn) {
    var row = range.getRow();
    var sheetName = sheet.getName();
    var spreadsheet = e.source;
    
    // Determine the last column with header in the first row
    var headerRow = sheet.getRange("1:1").getValues()[0];
    var lastValidColumn = 0;
    for(var i = headerRow.length - 1; i >= 0; i--) {
      if(headerRow[i] !== "") {
        lastValidColumn = i + 1;
        break;
      }
    }
    
    // Get the values from the modified row
    var rowValues = sheet.getRange(row, 1, 1, lastValidColumn).getValues()[0];
    
    // Build the payload with the data
    var payload = {
      "spreadsheetId": spreadsheet.getId(),
      "spreadsheetName": spreadsheet.getName(),
      "sheetId": sheet.getSheetId(),
      "sheetName": sheetName,
      "rangeA1Notation": range.getA1Notation(),
      "range": {
        "columnEnd": range.getColumn(),
        "columnStart": range.getColumn(),
        "rowEnd": row,
        "rowStart": row
      },
      "value": range.getValue(),
      "user": {
        "email": Session.getActiveUser().getEmail(),
        "nickname": Session.getActiveUser().getEmail().split('@')[0]
      },
      "rowValues": [
        rowValues.reduce((obj, value, index) => {
          obj[index.toString()] = value;
          return obj;
        }, {})
      ]
    };

    // Request settings
    var options = {
      "method": "post",
      "contentType": "application/json",
      "payload": JSON.stringify([payload])
    };

    // Send data to webhook
    UrlFetchApp.fetch(webhookUrl, options);
  }
}

Questions

  1. Q: Why use row 1 as a reference? A: Row 1 typically contains headers and helps determine which columns contain relevant data.
  2. Q: Can I monitor multiple columns? A: Yes, you can modify the code to monitor multiple columns by adding more conditions to the if statement.
  3. Q: Does it work with protected sheets? A: Yes, but the user executing the script needs proper permissions.
4 Likes

Hello again everyone @here

A huge thank you to those who have stepped in to share workarounds with the community. We truly appreciate it.

I wanted to let you know that we’ve also published a workaround in this article.

As you explore these workarounds, please know that our team is actively working on a permanent solution. We’ll keep you posted with any news.

Thank you so much for your patience and support! :pray:

6 Likes

I hope this is not being seen as personal advertisement.

But I wrote an article about a workaround JUST YESTERDAY!

If you want to trigger the Make workflow from Google Sheets with a Button, this might be helpful for you: How to trigger Make scenario from Google Sheets with a Button - call me eugenius - Automation

Hope that helps!

3 Likes

This is a huge stoppage for us and our business. How long is it supposed to take to get fixed?

It’s the weekend over here and I don’t wanna be jumping into the workaround solution if it’s gonna be fixed very soon.

3 Likes

Hope this will be resolve soon, many people rely on this feature

2 Likes

Hoping this gets resolved soon, I’m not jumping on workarounds just yet…

Hello any update ? It’s actually killing my activity since 3 days… please help

Hi everyone,
as everyone is already aware, the make for google sheets module disappeared from the store and we had over 15 scenarios to stop working because of it. For a quick fix you can use this app script workaround.

function onEdit(e) {
    if (!e || !e.range) {
        Logger.log("Event object is missing!");
        return;
    }

    var sheet = e.source.getActiveSheet();
    var range = e.range;
    var sheetName = sheet.getName();
    var spreadsheet = e.source;
    var spreadsheetId = spreadsheet.getId();
    var spreadsheetName = spreadsheet.getName();
    var sheetId = sheet.getSheetId();
    var oldValue = e.oldValue || "";
    var newValue = range.getValue();
    var user = Session.getActiveUser();
    
    var rowValues = sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).getValues()[0];
    var rowObject = {};
    rowValues.forEach((val, index) => {
        rowObject[index] = val;
    });
    
    var changeData = {
        "spreadsheetId": spreadsheetId,
        "spreadsheetName": spreadsheetName,
        "sheetId": sheetId,
        "sheetName": sheetName,
        "rangeA1Notation": range.getA1Notation(),
        "range": {
            "columnStart": range.getColumn(),
            "columnEnd": range.getColumn(),
            "rowStart": range.getRow(),
            "rowEnd": range.getRow()
        },
        "oldValue": oldValue,
        "value": newValue,
        "user": {
            "email": user.getEmail(),
            "nickname": user.getEmail().split('@')[0]
        },
        "rowValues": [rowObject]
    };
    
    Logger.log(JSON.stringify(changeData, null, 2));
    
    // You can replace this with a call to an API or another storage solution
    sendData(changeData);
}

function sendData(data) {
    var url = "YOUR_WEBHOOK_HERE"; // Replace with actual endpoint
    var options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(data)
    };

    try {
        var response = UrlFetchApp.fetch(url, options);
        Logger.log(response.getContentText());
    } catch (error) {
        Logger.log("API Call Failed: " + error);
    }

}

Just make sure to replace the webhook, for triggering you can follow this guide. I would like to thank chatGPT for the elbow great he put into solving this issue for me.

Open Extensions → Apps Script in your Google Sheet.
Click on the Triggers (:alarm_clock: clock icon) in the left panel.
Click + Add Trigger.
Set up the trigger as follows:
Choose function: onEdit
Event source: From spreadsheet
Event type: On edit
Click Save and grant the necessary permissions.

2 Likes

@Jess_Amao
It has already been reported in the community and is being supported by make employees.

2 Likes

Ohh thank you, I hope this will be solve as soon as possible because many users rely on this extension

2 Likes

Not visible to me as well

1 Like

Hello everyone @here

Just FYI: We’ve moved all relevant posts on this issue to this topic to keep the discussion focused and organized.

Once again, thank you so very much to everyone who is sharing workarounds with the community. I’d also like to remind you that there is a video in our Help Center that offers another workaround you may find useful.

Unfortunately, we don’t have any new updates to share at this moment. Our team is investigating options to republish the add-on in the Google Workspace Marketplace as soon as possible. We’ll share any updates as soon as we have them.

Once again, we sincerely apologize for any trouble and disruptions this is causing.
Thank you very much for your patience and understanding. :pray:

3 Likes

Amazing, thank you so much for this. The make add-on didn’t trigger on autofilled data so this has saved me for a workaround solution.

1 Like

I’m having the same issue and this is a very important system so this is a huge problem!

Hey, I noticed that over the weekend “Make for Google Sheets” disappeared from google add-ons. I couldn’t find it anywhere. The only add-on I was able to find was “Make for Google Forms”.

Maybe someone knows what happened or I’m missing something here?

Hello community!
I can confirm this workaround works great, you people should give it a try.

1 Like

its fixed or not can anyone help me to solve this issue.

Thanks for this, the workaround proposed by make made too many operations, this is perfect for my case.

1 Like

If you’ve been using a checkbox in Google Sheets (column K, in my case) to trigger Make.com scenarios , you might be in DeepSheet right now. But don’t panic—there’s a workaround using Google Apps Script that will keep your automations running.

:mag: What’s the Problem?

• The Make.com Google Sheets extension is down, meaning automations triggered by changes in Google Sheets no longer work.

• If you used checkboxes in column K to trigger scenarios , your automation has stopped .

Make.com hasn’t provided an official workaround yet, so we need to take matters into our own hands.

:white_check_mark: The Workaround: Use Google Apps Script Instead

Instead of relying on the Make.com extension, we can detect changes in Google Sheets using Google Apps Script and send data to Make.com via a webhook .

:hammer_and_wrench: How It Works

• We monitor column K for checkboxes being ticked :white_check_mark:.

• When a box is checked, the script collects all row data and sends it to Make.com.

• It cross-references the headers in row 3 (so you get structured data with field names).

• The script includes the spreadsheet ID and sheet name so Make.com knows where the data came from.

• The webhook URL is stored securely inside the script’s Properties Service , so it’s not visible in the code .

:pushpin: Here’s the Google Apps Script Code

This script will replace the Make.com extension and let you keep triggering automations:

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var spreadsheetId = spreadsheet.getId();
  var spreadsheetUrl = spreadsheet.getUrl();

  var columnToWatch = 11; // Column K (checkbox column)
  var scriptProperties = PropertiesService.getScriptProperties();
  var webhookURL = scriptProperties.getProperty("WEBHOOK_URL");

  if (!webhookURL) {
    Logger.log("Webhook URL is not set. Please add it in script properties.");
    return;
  }

  if (range.getColumn() === columnToWatch && range.getValue() === true) {
    var lastColumn = sheet.getLastColumn();
    var headers = sheet.getRange(3, 1, 1, lastColumn).getValues()[0]; // Get headers from row 3
    var rowData = sheet.getRange(range.getRow(), 1, 1, lastColumn).getValues()[0];

    var payload = {
      "spreadsheetId": spreadsheetId,
      "spreadsheetUrl": spreadsheetUrl,
      "sheetName": sheet.getName(),
      "row": range.getRow(),
      "data": {}
    };

    for (var i = 0; i < headers.length; i++) {
      if (headers[i]) {
        payload.data[headers[i]] = rowData[I];
      }
    }

    var options = {
      "method": "post",
      "contentType": "application/json",
      "payload": JSON.stringify(payload)
    };

    UrlFetchApp.fetch(webhookURL, options);
  }
}

// Function to securely store the webhook URL
function setWebhookUrl() {
  var scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperty("WEBHOOK_URL", "https://hook.eu2.make.com/your-secure-webhook");
}

:closed_lock_with_key: Why is the Webhook URL Hidden?

• Instead of hardcoding the webhook URL (which exposes it in the script), we store it securely in the Google Apps Script Properties Service .

• You need to run setWebhookUrl() once manually to set it up.

• This ensures better security and prevents accidental exposure.

:memo: What is Column K Used For?

• In my setup, column K contains checkboxes.

• When I tick a checkbox , it signals that this row needs processing .

• The script detects this change, collects the row’s data, and sends it to Make.com to trigger the appropriate scenario.

• This is a simple but powerful way to automate workflows in Google Sheets.

:rocket: How to Implement This Fix

  1. Open your Google Sheets and go to Extensions > Apps Script .

  2. Copy and paste the script.

  3. Run setWebhookUrl() once to store your webhook securely.

  4. Set up a trigger:

• Go to Triggers (Clock Icon) > Add Trigger .

• Function: onEdit.

• Event Source: From spreadsheet.

• Event Type: On edit.

• Click Save.

  1. :white_check_mark: Now your automations will trigger every time a checkbox is checked!

:rocket: Why This Matters

This is not just a temporary fix—this method actually makes your automations more secure and reliable than before. Even when Make.com restores the Google Sheets extension, using Google Apps Script might be a better long-term approach for more control and security.

If you’re affected by this Make.com Google Sheets issue, let me know if this solution works for you! :fire::bulb:

:handshake: Let’s Fix This Together

If you found this helpful, share it with others in the Make.com community!

Drop your questions in the comments—I’d love to help troubleshoot. :rocket:

1 Like