Ignorer les cellules vides dans Google Sheets pour le script de texte avec lien hypertexte

Sep 19 2020

J'ai un script que j'ai créé dans Google Apps Script qui envoie un message détendu à un utilisateur avec certains ID sur une liste dans une feuille Google avec un lien hypertexte. La liste de chaque utilisateur ne contient pas le même nombre d'identifiants, ce qui entraîne l'apparition de l'URL du lien hypertexte pour les cellules vides dans le message slack. Est-il possible d'ignorer ou de masquer l'URL du lien hypertexte pour les cellules vides pour chaque utilisateur. Toutes mes excuses si ce n'est pas clair. Veuillez consulter le script de charge utile ci-dessous:

// custom slack webhook
   var url = "https://hooks.slack.com/services/XXXXXSBGW/XXXXXXU1K/XXXXXXXXn9jfZXAAAAAA";
  
  var payload = {
 "channel": "@"+city[2],
 "username": "Alerts",
 "text": "Hi " + city[0] + "\n"+
    "\n Here are your most pending kits for review.\n" + 
    "\n <https://google.com/maps/'"+"|"+city[5]+">" +   
    "\n <https://google.com/maps/'"+"|"+city[6]+">" + 
    "\n <https://google.com/maps/'"+"|"+city[7]+">" + 
    "\n <https://google.com/maps/'"+"|"+city[8]+">" +
    "\n <https://google.com/maps/'"+"|"+city[9]+">" + 
    "\n Please review these kits as soon as possible.\n" 
  };

Hyperliens génériques fournis, mais les colonnes 7 à 9 de la feuille de calcul de la ville sont parfois vides. Est-il possible de sauter ces cellules si elles sont vides ou du moins ne pas faire apparaître l'URL? Lorsque les cellules sont vides, l'URL du lien hypertexte est généralement affichée dans le message Slack. Toute orientation serait très appréciée.

Réponses

Diego Sep 19 2020 at 04:26

Vous devez vérifier chacune de ces valeurs pour voir si elles sont renseignées et ensuite seulement les ajouter au message. Vous pouvez le faire de plusieurs manières, mais la plus simple est peut-être de parcourir les valeurs, de créer un tableau, puis de rejoindre le tableau.

// Example city array
var city = ["name", 1, 2, 3, 4, "city1", "city2", "", "city3"];

// Compile links
var linkStartIndex = 5;
var linkEndIndex = 9;
var links = [];
for (var i = linkStartIndex; i <= linkEndIndex; i++) {
  var value = city[i]
  if (value != null && value != "") {
    links.push("\n <https://google.com/maps/'"+"|"+value+">");
  }
}

// Compile full text
var text = [
  "Hi " + city[0] + "\n",
  "\n Here are your most pending kits for review.\n",
  links.join(""),
  "\n Please review these kits as soon as possible.\n"
];
var joined = text.join("");

console.log(joined);

Vous pourriez potentiellement rendre cela un peu plus clair en utilisant map () , mais tout dépend vraiment de la façon dont vos données sont structurées. Personnellement, je n'aime pas avoir un nombre variable de colonnes car elles ne se convertissent pas aussi bien en tableaux que les lignes variables. Je préfère également travailler avec des objets lorsque cela est possible. Considérez comment la génération de cet objet à partir de votre citytableau peut faciliter la compréhension de votre code:

var record = {
  name: 'Brian',
  slackId: '123',
  cities: [
    'New York',
    'London'
  ]
};