【问题标题】:Need sheets script to save img to drive需要工作表脚本将图像保存到驱动器
【发布时间】:2019-04-10 22:32:12
【问题描述】:

我需要一个与 google 表格一起使用的脚本,以将 .img url 列表保存到特定的 google 驱动器文件夹,其中文件命名来自另一个单元格。

例如:
A 列 - 文件 URL
/imagefilepath.jpg
B 列 - 另存为名称
image_1

使用“image_1”文件名自动保存 /imagefilepath.jpg 到谷歌驱动器文件夹“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 名称保存到谷歌驱动器的根目录中,并且只有当我将 img url 插入脚本时。如何让它动态化?

P.s 在这里找到了一些脚本,但似乎都已过时/不起作用。我有超过 2000 个网址和不同的文件名。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 不错。谢谢你。我收到“ReferenceError:驱动器未定义”消息。
    • 您需要启用 Drive API。
    【解决方案2】:

    我对 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());
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多