Используя Google Script, проверьте URL-адрес, успешно загружает изображение и, если нет, получает другое изображение. - PullRequest
1 голос
/ 15 октября 2019

Я использую Autocrat для создания отчетов PDF из Google Sheet. У некоторых учеников есть фотографии, связанные с их собственным URL-адресом (на основе идентификаторов учеников, например, 1143.jpg), но у некоторых еще не было фотографий. Мне нужно проверить URL-адрес, чтобы увидеть, есть ли за URL-адрес изображение позади него, и не по умолчанию ли это другое изображение, скажем, школа. TIA Я попробовал следующий код ниже

Это возвращает код 301 для всех изображений, независимо от того, есть ли они там. Я предполагаю, потому что они приходят с FTP-сервера cPanel (или, возможно, это webdav, поскольку адрес начинается с http://).

function getStatusCode(url){
   var options = {
     'muteHttpExceptions': true,
     'followRedirects': false
   };
   // var url_trimmed = url.trim();
   var response = UrlFetchApp.fetch(url, options);
   return response.getResponseCode();
}

. Это просто проверяет, содержит ли URL правильное расширение файла. Мне нужно знать, действительно ли изображениефайл существует в сети

function checkURL(url) {
    return(url.match(/\.(jpeg|jpg|gif|png)$/) != null);
}

Код ниже - это Javascript (я немного Noob для Google Script и Javascript, но я понимаю, что они очень похожи). К сожалению, Google Script, кажется, не вмещаетКласс переменных IMAGE, поэтому я не уверен, как заставить работать приведенный ниже код.

function imageExists(url, callback) {
  var img = UrlFetchApp.fetch(url);
  img.onload = function() { callback(true); };
  img.onerror = function() { callback(false); };
  img.src = url;
}

В идеале я хочу создать функцию, которую затем можно будет вызывать из ячейки Google Sheet. Что-то вроде = CheckImageExists(ImageURL, DefaultImageOfSchool.jpg)

...