javascript 如何下载图像的URL列表,并使用Google Sheets中相邻列中可用的值对其进行重命名Code.gs

mnemlml8  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(116)

我已经在谷歌工作表和代码的gs脚本(code.gs)它一直工作得很好,很好的下载功能,它是下载每一个图像在我的谷歌驱动器文件夹.但主要的是,我希望他们被下载与重命名他们在同一时间与列的文本值可在相邻列
我只是希望图像被重命名的同时,当他们正在下载的谷歌驱动器文件夹。
例如第一列==〉〉“图片URL”第二列==〉〉“待重命名文本”
我已经做了下载按钮,当我点击下载按钮,它应该执行命令下载图像,以及重命名图像的值在第二列。它的例子是在下面的屏幕截图显示。我也分享下面的工作表链接:
[HERE图片演示是我想要的吗]

https://docs.google.com/spreadsheets/d/1jItuI2tQbpH4A5b9CFS9xWV3mNtnrV2jMRYPxEZSvlM/edit?usp=sharing
我的代码:

function downloadImage() {
    let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    let lastRow = sheet.getLastRow();
    for (let i = 0; i < lastRow - 1; i++) {
        let folder = DriveApp.getFolderById("Folder_id_of_your_drive");
        let url = sheet.getRange(2 + i, 1).getValue();
        let image = SpreadsheetApp.newCellImage().setSourceUrl(url);
        let blob = UrlFetchApp.fetch(url).getBlob();
        folder.createFile(blob);
    }
}

我从字面上尝试了每一件事,以产生的结果,但不幸的是失败了,我期待的结果是,图像可以下载与重命名的文本中可用的单独列表的单元格值或与相邻的列

pxq42qpu

pxq42qpu1#

您可以检查错误并按如下方式重命名文件:

function downloadImage() {
  const folder = DriveApp.getFolderById('...folder ID goes here...');
  const sheet = SpreadsheetApp.getActiveSheet();
  const urls = sheet.getRange('A2:A').getDisplayValues().flat();
  const names = sheet.getRange('C2:C').getDisplayValues().flat();
  urls.forEach((url, index) => {
    if (!url) return;
    try {
      const blob = UrlFetchApp.fetch(url).getBlob();
      folder.createFile(blob).setName(names[index]);
    } catch (error) {
      console.log(error.message);
    }
  });
}

有关其他信息,请参见Folder.createFile()和Blob类。

jjhzyzn0

jjhzyzn02#

function downloadandrename() {
  const f = DriveApp.getFolderById('fid');
  const sh = SpreadsheetApp.getActiveSheet();
  const vs = sh.getRange('A2:C' + sh.getLastRow()).getDisplayValues();
  vs.forEach((r, i) => {
    if (r[0] && r[2]) {
      f.createFile(UrlFetchApp.fetch(r[0]).getBlob().setName(r[2]));
    }
  });
}

相关问题