How to display multiple elements of an array
In this article, you will learn how to display not just one row from Google Sheets, but several at once.
This tutorial is applicable not only to Google Sheets: following this algorithm, you can display the elements of any array. This is useful if you want to display several products, links, etc., to your users at once.
Create a spreadsheet in Google Sheets and get its URL
Create a note spreadsheet and add the note
column to it.
As with reading a single row from Google Sheets, the first step is to publish the spreadsheet and get a URL to access it.
Follow the steps according to the instructions.
Add an HTTP request to a spreadsheet
In your script, add the HTTP request block.
Paste the link obtained in the previous step in the URL field.
The GET
method is used to read data.
On the RESPONSE tab, create an $items
variable with the $httpResponse
value.
To read data from spreadsheets, you do not need to fill out the BODY
and HEADERS
tabs.
Add other blocks to your script
Error detection
From the Error option, make a connection to the Text block with the error $httpStatus
value.
This screen will help you understand what is causing the problem if the request fails to complete successfully.
Display the first element of an array
From the Success option, make a connection to the Conditions block with the $items.first()
value.
This uses the first
internal function to print the first element of the array.
Assign a zero value
From the $items.first()
condition, make a connection to the next Conditions block adding the $index = 0
value to it.
Connect both true
and else
options to the next screen.
Since the variable is assigned 0 here, we need to connect both options.
Display the current note
On the next screen, add the Text block and write $items.current().note
in it.
This is where you display the current note. Add the Transition block to the same screen.
Transition to next note
From the Transition block, create the Conditions block and write $items.next()
in it.
Check the remaining elements of an array
Use the next
function to check if there are more elements in the array.
From the else
option, make a connection to a new screen. Add a Text block here with the No more notes
message.
From the $items.next()
option, make a connection to the Conditions block and write $index = $index + 1
in it.
If there is another array element, then the $index
variable will be increased by 1.
This way, you are counting the number of output elements.
From the $index = $index + 1
option, make a connection to the Conditions block and write
$index % 5 == 0
in it.
This uses the JavaScript Remainder operator.
This operator returns the remainder of dividing the left-hand operand by right-hand operand.
That is, the remainder of dividing $index
by 5.
It also uses the ==
comparison operator, which compares the remainder of a division with 0.
Add connections between blocks
In the $index % 5 == 0
condition, connect else
to the $items.current().note
screen.
If $index
modulo 5 is not 0, then the next note will be displayed.
If only two notes were displayed, then the remainder of 2 divided by 5 will not be 0, so the next note will be displayed.
This will continue until $index
is equal to 5.
Connect the $index % 5 == 0
condition to the Display 5 more?
screen.
Add a Yes button or a ready-made Agreement intent to this screen and connect it to the $items.current().note
screen.
Resulting script
As a result, you will get the following script:
In this script, the bot will display 5 array elements. After that, if there are elements left in the array, the bot will ask whether to display 5 more elements. If the client answers “yes”, then the bot will display the array elements until they run out.