'Trying to see if I can run the same Slack message payload multiple times in Google scripts via data from a spreed sheet

I have a spreadsheet of data where I pull data from an array of data. After I declare the data, I run the code and it sends a message to slack using their block kit.

Issue is I have to manually input what values of the data should be. I was wondering if there is a way to pull data for my message payload>post it to the channel>then repeat this process till no more data is left.

Example Spreadsheet will look like this below:

Greeting Word
Holla Mundo
Hello World

Right now to pull my row and send a message I have it set up like this;

function main() {
  
  // Grabbing data from Google Sheet
  data = getGoogleSheetData(SHEET_ID)
  Logger.log(data)


//Variables for data
Data1 = data[0][0]
Data2 = data[0][2]

However I have to always change the first array to match up with the next line of data, Then run it.

So if I want to send my message once more I just change the values to this then run it.

//Variables for data
Data1 = data[1][0]
Data2 = data[1][2]

Hopefully that makes sense. Any guidance is of course much appreciated

Edit***

Here is the code example:

    // Method use to post in Slack channel
function sendAlert(payload) {
 const webhook = SLACK_URL; //Paste your webhook URL here
  var options = {
   "method": "post",
   "contentType": "application/json",
   "muteHttpExceptions": true,
   "payload": JSON.stringify(payload)
 };
  try {
   UrlFetchApp.fetch(webhook, options);
 } catch(e) {
   Logger.log(e);
 }
}
 
// Defining the data range and vaules to grab from a Google Sheet
function getGoogleSheetData(GoogleSheetId) {
  sheet_data = SpreadsheetApp.openById(GoogleSheetId)
  let data = sheet_data.getSheetByName('sheet1').getRange("A1:AP17").getValues();
 
 return data
  }
 
 
function main() {
  // Grabbing data from Google Sheet
 data = getGoogleSheetData(SHEET_ID)
 Logger.log(data)
 
 
//Variables for data
Date = data[0][0]
Contact_ID = data[0][2]
Sources = data[0][9]
Offer = data[0][10]
Accepted_Declined = data[0][12]
Recruiter = data[0][19]
Posting_Title = data[0][18]
Question_1 = data[0][33]
Question_2 = data[0][34]
Question_3 = data[0][35]
Question_4 = data[0][36]
Question_5 = data[0][37]
Question_6 = data[0][38]
Question_7 = data[0][39]
Question_8 = data[0][40]
Question_9 = data[0][41]
 
 
// check to see if Question_1 is null
if(Question_1.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_1 = "N/A"
}
 
// Check if Question_2 is null
if(Question_2.length != 0) {
 
Logger.log(data);
 
} else
 
{
Question_2 = "N/A"
}
 
 
// Check if Question_3 is null
if(Question_3.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_3 = "N/A"
}
 
 
// Check if Question_4 is null
 if(Question_4.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_4 = "N/A"
}
 
 
// Check if Question_5 is null
 if(Question_5.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_5 = "N/A"
}
 
// Check if Question_6 is null
 if(Question_6.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_6 = "N/A"
}
 
 
// Check if Question_7 is null
 if(Question_7.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_7 = "N/A"
}
 
// Check if Question_8 is null
 if(Question_8.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_8 = "N/A"
}
 
// Check if Question_9 is null
 if(Question_9.length != 0){
 
Logger.log(data);
 
} else
 
{
Question_9 = "N/A"
}
 
 
 
   message_payload = {
   "blocks": [
 
{
     "type": "header",
     "text": {
       "type": "plain_text",
       "text": "Candidate Experience Survey Responses :lever:",
       "emoji": true
     }
 },
   {
     "type": "divider"
   },
 
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*Date Applied*\n" + String(Date),
     }
   },
  {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*ID*\n" + String(Contact_ID)
     }
   },
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text":  "*Source*\n" + String(Sources)
     }
   },
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*Offer*\n" + String(Offer)
    }
   },
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*Current Status*\n" + String(Accepted_Declined)
     }
   },
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*Recruiter*\n" + String(Recruiter)
     }
   },
 
   {
     "type": "section",
     "text": {
       "type": "mrkdwn",
       "text": "*Posting Title*\n" + String(Posting_Title)
     }
   },
 
 
   {
     "type": "section",
     "fields": [
       {
         "type": "mrkdwn",
         "text": "*question 1*\n" + String(Question_1)
       },
       {
         "type": "mrkdwn",
         "text": "*question 2*\n" + String(Question_2)
       },
       {
         "type": "mrkdwn",
         "text": "question 3*\n" + String(Question_3)
       },
       {
         "type": "mrkdwn",
         "text": "*question 4*\n" + String(Question_4)
       },
       {
         "type": "mrkdwn",
         "text": "Question 5\n" + String(Question_5)
       },
       {
         "type": "mrkdwn",
         "text": "Question 6\n" + String(Question_6)
       },
       {
         "type": "mrkdwn",
         "text": "Question 7*\n" + String(Question_7)
       },
       {
         "type": "mrkdwn",
         "text": "Question 8\n" + String(Question_8)
       },
       {
         "type": "mrkdwn",
         "text": "Question 9\n" + String(Question_9)
       }
     ]
   }
 ]
}
  test = sendAlert(message_payload)
 Logger.log(test)
 Logger.log(test)

The Spread Sheet looks like has the data in each line.

enter image description here

Right now I change the data manually in my code.

So I ran the code first for the arrays of data [0][0] and so on then change it to [1][0] and so on till I am out of data in spreadsheet.

Looking to find a way of doing that automatically in the code instead of me manually changing the values then running it.

Hopefully that explains it better.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source