Pular células vazias em planilhas do Google para script de texto com hiperlink
Eu tenho um script que criei no Google Apps Script que envia uma mensagem de folga para um usuário com determinados IDs em uma lista em uma Planilha Google com um hiperlink. A lista para cada usuário não contém o mesmo número de IDs, resultando na url do hiperlink para que as células vazias apareçam na mensagem do slack. É possível pular ou ocultar o URL do hiperlink para células que estão vazias para cada usuário. Peço desculpas se isso não estiver claro. Consulte o script de carga útil abaixo:
// 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"
};
Hiperlinks genéricos fornecidos, mas basicamente as colunas 7 a 9 na planilha City às vezes ficam em branco. É possível pular essas células se em branco ou pelo menos não fazer o url aparecer? Quando as células estão em branco, geralmente o URL do hiperlink é exibido na mensagem de folga. Qualquer orientação seria muito apreciada.
Respostas
Você precisa verificar cada um desses valores para ver se eles estão preenchidos e só então adicioná-los à mensagem. Você pode fazer isso de várias maneiras, mas talvez a mais simples seja percorrer os valores, construir uma matriz e, em seguida, unir a matriz.
// 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);
Você poderia tornar isso um pouco mais limpo usando map () , mas tudo realmente depende de como seus dados estão estruturados. Pessoalmente, não gosto de ter um número variável de colunas, pois elas não são convertidas em arrays tão bem quanto as linhas variáveis. Também prefiro trabalhar com objetos sempre que possível. Considere como a geração deste objeto a partir de sua citymatriz pode tornar seu código mais fácil de compreender:
var record = {
name: 'Brian',
slackId: '123',
cities: [
'New York',
'London'
]
};