Мне нужен скрипт для использования с листами Google, чтобы сохранить список URL-адресов .img в определенную папку на диске Google с именем файла из другой ячейки.
Например:
Столбец A — URL-адрес файла
/imagefilepath.jpg
Колонка B — Сохранить как имя
image_1
Автоматическое сохранение /imagefilepath.jpg в папку Google Диска «Test» с именем файла «image_1».
Это возможно?
Новичок в скриптах... нужен совет/указатели или рабочий скрипт (даже лучше)!
На данный момент получил следующее:
/**
* Uploads a new file to the user's Drive.
*/
function uploadFile() {
var imgurl = 'https://www.w3schools.com/w3css/img_lights.jpg';
var image = UrlFetchApp.fetch(imgurl).getBlob();
var filename = setName('test');
var folder = DriveApp.getFoldersByName(folder);
if (folder != null) {
var file = DriveApp.createFile(image);
}
Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize);
}
Но он сохраняется как имя URL-адреса в корень диска Google и только в том случае, если я вставляю URL-адреса img в скрипт. Как сделать его динамичным?
P.s. нашел здесь несколько скриптов, но все они устарели/не работают. У меня более 2000 URL-адресов и разных имен файлов.
Попробуй это:
function uploadFile() {
var imgurl = 'https://www.w3schools.com/w3css/img_lights.jpg';
var image = UrlFetchApp.fetch(imgurl).getBlob().getAs('image/jpeg').setName('test');
var folder = DriveApp.getFolderById('FolderId');
var file = DriveApp.createFile(image);
Drive.Files.update({"parents": [{"id": folder.getId()}]}, file.getId());
}
Итак, ваша окончательная функция должна выглядеть примерно так:
function uploadFiles() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
var imgurl=vA[i][0];//Column A for url
var name=vA[i][1];//Column B for filename
var image=UrlFetchApp.fetch(imgurl).getBlob().getAs('image/jpeg').setName(name);
var folder=DriveApp.getFolderById('1aIawMeJCjB1GWaV6URH3jkV4xUJhaYLV');
var file=DriveApp.createFile(image);
Drive.Files.update({"parents": [{"id": folder.getId()}]}, file.getId());
}
}
Вам нужно включить Drive API.
Я внес изменения в отличный ответ МетаМэн, чтобы QR-коды (в столбце A1: A) для URL-адресов формы Google с предварительно заполненными ответами можно было загрузить на Диск (с новыми именами для файлов в столбце B1: B) .
function uploadFiles() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('MY SHEET NAME');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
var imgurl = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data = "+encodeURIComponent(vA[i][0]);//Column A for url
var name=vA[i][1];//Column B for filename
var image=UrlFetchApp.fetch(imgurl).getBlob().getAs('image/jpeg').setName(name);
var folder=DriveApp.getFolderById('MY FOLDER ID');
var file=DriveApp.createFile(image);
Drive.Files.update({"parents": [{"id": folder.getId()}]}, file.getId());
}
}
Хороший. Спасибо. Я получаю сообщение «ReferenceError: Диск не определен».