Help with Make.com Google Sheets → Telegram automation (messages sending all at once instead of spaced out)

Hey everyone,

I’m trying to set up an automation in Make.com that pulls messages from a Google Sheet and sends them one at a time to my Telegram bot.

Here’s my current setup:

  • Google Sheets (Search Rows)IteratorTelegram Bot (Send Message)

  • I’ve got 8 rows in my Google Sheet, each row is one message.

The problem: when I run the scenario, all 8 messages send at once. What I want is for only 1 message to send at a time, and then the scenario should wait (e.g. 4–5 days) before sending the next message in the sheet. Basically a rotating sequence of messages, evenly spaced out.

I’ve seen suggestions about using counters, update cell, or routers, but I’m not sure what’s the cleanest way to:

  1. Send message 1

  2. Wait X days

  3. Send message 2, etc.

  4. Once all 8 messages are

    sent, loop back to the first one

Has anyone done this before in Make? Should I avoid Iterator and instead use a counter + search row method? Or is there a way to add a delay in between each row that Iterator processes?

Any help or examples would be amazing :folded_hands:

My Current Scenario:

Hi @Viper_Bets. Welcome to the community!

That’s a nice use case. Google Sheets - Search rows already yields as many bundles as the number of rows returned.

You just need some logic to filter the results.

I’m assuming you have control over the spreadsheet. Also, that you have several numbers to send messages to, each one with 8 different messages. Something like this:

To start, you need to aggregate the results by the receiving number. Only then you iterate over the array of dates and messages of each number, to find the one that corresponds to the correct message for today.

Just retrieve all rows from the sheet (filter numbers according to your needs).

Then, aggregate the results, grouping by number:

Next, iterate over the resulting array.

Now comes the trickier part, filtering the results.

You need to subtract the message date from the current date (both without the time) in seconds (X). Then, you divide the result by 86400, that is the number of seconds in a day. Next, you divide the result by 8 and get the remainder. If it’s zero, that’s the date of your message.

Here’s the formula:

{{((formatDate(parseDate(formatDate(now; “DD-MM-YYYY”); “DD-MM-YYYY”); “X”) - formatDate(parseDate(formatDate(4.2; “DD-MM-YYYY”); “DD-MM-YYYY”); “X”)) / 86400) % 8}}

And the result of the filter:

I used a return module to test. In your case, it would be Telegram send message.

The whole flow will execute once for each number returned, not for each row in the spreadsheet, saving you some credits. :wink:

Hope that clarifies it.

@damato

Thanks so much for the detailed response :folded_hands: That makes sense. Just to clarify my use case:

  • I have full access to the Google Sheet.

  • I’m only sending messages to one single Telegram channel (not to multiple numbers).

  • My sheet just has 8 rows, each with one message.

What I want is for the Make scenario to send only one row/message at a time, then wait 4–5 days before sending the next one, and once it reaches the last message, loop back to the first.

Here’s a screenshot of my sheet so you can see how it’s structured:

Given that setup, should I still use the formula/aggregation approach you described, or is there a simpler way (like a counter) since I’m only working with one channel?