需要工作表脚本将图像保存到驱动器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要工作表脚本将图像保存到驱动器相关的知识,希望对你有一定的参考价值。
我需要一个与google工作表一起使用的脚本,将.img网址列表保存到特定的google驱动器文件夹,文件命名来自另一个单元格。
例如: A列 - 文件URL /imagefilepath.jpg B列 - 保存为名称 IMAGE_1
使用“image_1”文件名自动保存/imagefilepath.jpg到google驱动器文件夹“Test”。
那可能吗?
脚本新手..需要一些建议/指针或工作脚本(甚至更好)!
目前得到以下内容:
/**
* 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驱动器的根目录中,并且只有在我将img urls插入脚本时才会这样。我如何让它充满活力?
P.s在这里发现了一些脚本,但似乎都过时/不起作用。我有超过2000个网址和不同的文件名。
答案
试试这个:
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());
以上是关于需要工作表脚本将图像保存到驱动器的主要内容,如果未能解决你的问题,请参考以下文章
隐藏的工作表会导致Google表格的导出工作表作为PDF网址的输出损坏
用于将 google drive 中的文件名列表与 google sheet 列中的名称列表进行比较的 Apps 脚本,以将新文件从驱动器添加到工作表