我需要一个脚本来与Google表格一起使用,以将.img网址列表保存到特定的Google驱动器文件夹中,文件的名称来自另一个单元格。
例如:
列A-文件网址
/imagefilepath.jpg
B列-另存为名称
图片_1
将/imagefilepath.jpg自动保存到带有“ image_1”文件名的Google驱动器文件夹“测试”中。
有可能吗?
脚本的新手..需要一些建议/指针或工作脚本(甚至更好)!
当前获得以下信息:
/**
* 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);
}
但是只有在我将img url插入脚本的情况下,它才能将url名称保存为google驱动器的根目录。我如何使其动态?
P.s在这里找到了一些脚本,但是所有脚本似乎都已过时/不起作用。我有2000多个网址和不同的文件名。
答案 0 :(得分:0)
尝试一下:
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());
}
}
答案 1 :(得分:0)
我对 MetaMan 的好答案进行了修改,以便可以将带有预填充响应的 Google 表单 URL 的 QR(在 A1:A 列中)上传到云端硬盘(使用新的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());
}
}