需要工作表脚本将图像保存到驱动器

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());
  

以上是关于需要工作表脚本将图像保存到驱动器的主要内容,如果未能解决你的问题,请参考以下文章