Вставка изображения в Google Sheets с Google Drive с помощью скрипта Apps - PullRequest
0 голосов
/ 25 сентября 2018

Я пытался 9 days добавить изображение, загруженное на мой диск (с помощью формы Google), в свой лист Google с помощью скрипта Apps, но оно не работает, и я понятия не имею, почемуниже приведен мой код:

function getImage(){

  var folderImage = DriveApp.getFolderById("0B7gxdApLS0TYfm1pRHpHSG4yTm96bm1PbTZQc1VmdGpxajY4N1J4M1gtR1BiZ0lOSl9NMjQ");
      Logger.log(folderImage.getFiles().next().setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW));


  Logger.log(folderImage.getFiles().next().getSharingAccess());
  Logger.log(folderImage.getFiles().next().getSharingPermission());

  var imageFile = folderImage.getFiles().next().getBlob();

  detailSheet.insertImage(imageFile, 1, 13);

}

Я даже пытался сделать права доступа к общим ресурсам и доступа к ним как можно более открытыми, но продолжаю получать это сообщение об ошибке:

«К сожалению, произошла ошибка сервера. Пожалуйста, подождите немного и повторите попытку»

Я нахожу сообщение об ошибке неоднозначным, что приводит меня в тупик.Обычно сообщение дает мне хорошее представление о том, где я ошибся.

Я считаю, что мой код верен, и во время исследования я не нашел какой-либо определенной причины, по которой это не должно работать.Кто-нибудь знает, где я ошибаюсь?

Решение было бы здорово, но желательно критиковать мой код, чтобы я мог выучить:)

1 Ответ

0 голосов
/ 25 сентября 2018

Пара проблем с вашим сценарием:

  1. Вы никогда не привязываетесь к определенному файлу, поэтому для работы с одним и тем же файлом вы должны каждый раз повторно инициализировать итератор.
  2. Выне проверяйте его MIME-тип до его использования в качестве изображения

Пример, решающий эти проблемы:

function addFolderPNGs_(sheet, folderId) {
  const folder = folderId ? DriveApp.getFolderById(folderId) : DriveApp.getRootFolder(); // scope only to the root or given folder.
  const imgs = folder.getFilesByType(MimeType.PNG);
  var targetRow = sheet.getLastRow();
  while (imgs.hasNext()) {
    var img = imgs.next();
    Logger.log(img.getName())
    sheet.insertImage(img.getBlob(), 1, ++targetRow);
  }
}

Ссылки

...