Как отобразить изображение диска Google с помощью сценариев Google Apps?


Если я использую следующие страницы учебника Google для загрузки изображения, это работает нормально:

/ / самый первый Google Doodle! приложение.добавить(приложение.createImage("http://www.google.com/logos/googleburn.jpg"));

Но если я попытаюсь получить URL из собственных документов Google, изображение не загрузится:

var image;
var url;    
var files = DocsList.getAllFiles();        
for (var i = 0; i < files.length; i++) {  
    url = files[i].getUrl();  
    app.add(app.createImage(image));  
    app.add(app.createLabel(url));  
}

Возвращаемый URL-адрес относится не непосредственно к изображению, а к какому-то контейнеру Google Docs:

Http://docs.google.com/a/--------.com/open?id=0B5B_X4WaXYC7cExRT3Nvb0hTamc

5 2

5 ответов:

Да, вы не можете использовать изображения, хранящиеся в Google Docs. URL Imgae должен быть горячей ссылкой (прямой ссылкой) на это изображение.

app.createImage('YOUR_IMAGE_HOT_LINK_URL');

Я знаю, что здесь есть общепринятый ответ, но с момента устаревания UiApp он уже не совсем точен. Ниже приведен скрипт для чтения заданного каталога Google drive и передачи каждогообщедоступного изображения в шаблон через объект assets с помощью современных API скриптов приложений.

function getAssets(driveDir) {
    var folders = DriveApp.getFoldersByName(driveDir);
    var folder = (folders.hasNext())? folders.next() : false ;
    var assets = {};
    if(folder){
        var files = folder.getFiles();
        while (files.hasNext()) {
            var file = files.next();
            var fileName = file.getName();
            assets[fileName] = 'https://drive.google.com/uc?export=view&id=' + file.getId();
        }
    }
    return assets;
}

Функция doGet() должна включать активы

function doGet(e) {
    var form = HtmlService.createTemplateFromFile('form.html');
    form.assets = getAssets('Your-drive-folder-name');

    return form.evaluate();

}

И, наконец, в шаблоне HTML у вас будет доступ к вашим активам через следующее код:

 <img src="<?= assets.fileName ?>" />

Еще раз имейте в виду, что активы должны быть общедоступными, чтобы изображение было разрешено на вашем сайте google/скрипте приложения/что угодно. Вы можете установить это с помощью getAssets () с файлом.метод setSharing API, но я обнаружил, что установка разрешений на загрузку не была большой Хассель.

Отображение изображения в UiApp с аутентифицированного URL-адреса невозможно, даже из сервисов Google, таких как сайты, документы и т. д. выпуск №912 документирует это.

Вы можете сохранить изображение как вложение на странице Google сайтов, а затем получить к нему доступ с помощью API сайтов скрипта Google Apps.

На самом деле вы можете сделать это, но я боюсь, что это не очень надежно. Когда вы нажмете кнопку Загрузить в контейнере просмотра, эта ссылка будет работать. Тем не менее, вы должны иметь изображение в открытом доступе. Или поделиться им со всеми пользователями,которые смогут просматривать лист или документ.