Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] como mudar os valores da validação de links do google sheets para positivo (se for 200),indefinido (se for 3xx) e negativo (se for 4xx)

recentemente me veio uma curiosidade em aprender a fazer certas coisas no google sheets e recentemente descobri que dá para validar links por ele através de um script:

function getStatusCode(url) {
  var url_trimmed = url.trim();
  var cache = CacheService.getScriptCache();
  var result = cache.get(url_trimmed);
  
  
  if (!result) {

    var options = {
      'muteHttpExceptions': true,
      'followRedirects': false
    };
    var response = UrlFetchApp.fetch(url_trimmed, options);
    var responseCode = response.getResponseCode();

  
    cache.put(url_trimmed, responseCode, 21600); 
    result = responseCode;
  }

  return result;
}

com ele eu posso ver o tipo de código de status que a url tem(os erros seriam status 404): Insira aqui a descrição dessa imagem para ajudar na acessibilidademás eu gostaria de saber se teria uma maneira de em vez de receber o código de status eu poderia mudar para palavras como positivo(para 200), negativo(para 4xx) e indefinido para (3xx). se houver uma maneira como faria isso?

1 resposta
solução!

Olá, Estevão!

Para modificar o script e retornar palavras como "positivo", "indefinido" e "negativo" em vez dos códigos de status, você pode adicionar uma estrutura condicional à função que verifica o código de status e retorna a palavra correspondente. Aqui está como você pode fazer isso:

function getStatusCode(url) {
  var url_trimmed = url.trim();
  var cache = CacheService.getScriptCache();
  var result = cache.get(url_trimmed);
  
  if (!result) {
    var options = {
      'muteHttpExceptions': true,
      'followRedirects': false
    };
    var response = UrlFetchApp.fetch(url_trimmed, options);
    var responseCode = response.getResponseCode();
    
    // Aqui começa a nova lógica para retornar palavras em vez de códigos
    if (responseCode === 200) {
      result = 'positivo';
    } else if (responseCode >= 300 && responseCode < 400) {
      result = 'indefinido';
    } else if (responseCode >= 400 && responseCode < 500) {
      result = 'negativo';
    } else {
      // Para outros códigos, você pode decidir o que retornar
      result = 'outro';
    }
    // Fim da nova lógica

    cache.put(url_trimmed, result, 21600); // Armazena a palavra no cache
  }

  return result;
}

Com essa modificação, a função agora verifica o código de status e retorna uma string correspondente ao intervalo do código. Por exemplo, se o código de status for 200, a função retornará "positivo". Se estiver no intervalo de 300 a 399, retornará "indefinido". E se estiver no intervalo de 400 a 499, retornará "negativo". Para códigos fora desses intervalos, você pode decidir o que retornar ou adicionar mais condições conforme necessário.

Espero que essa modificação atenda ao que você está procurando. Experimente o script modificado e veja se ele funciona conforme você espera.

Bons estudos!