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

117 Views Asked by At

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.

0

There are 0 best solutions below