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

时间:2019-04-10 22:32:13

标签: google-apps-script google-sheets

我需要一个脚本来与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多个网址和不同的文件名。

2 个答案:

答案 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());
}
}