gpt4 book ai didi

google-apps-script - 使用 Google Apps 脚本将来自 Google 云端硬盘或 URL 的图像插入 Google 表格

转载 作者:行者123 更新时间:2023-12-04 12:40:10 25 4
gpt4 key购买 nike

我在下面使用这个脚本将来自 URL 的图像插入到 Google 表格中的指定单元格,但是,它不适用于 Google Drive 中包含的图像 URL。

//If any graphic is a URL, insert that URL into the corresponding cell in the Briefing tab.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("main_gen").getRange("ImageRange").getValues();
var dstSheet = ss.getSheetByName("Briefing");
for (var num = 0; num < source.length; num ++) {
if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
dstSheet.getRange(graphics_placements[num]).setFormula(graphicformula);
}
}

用户在一个选项卡上的预定义数量的单元格中输入图像的 URL。根据他们选择的顺序(可以有 1 到 5 张图像),图像被插入到另一个选项卡上的指定单元格中。我如何重写上面的代码以同时考虑这样的 URL ( https://google.com/image.png ) 和这样的 ( https://drive.google.com/open?id=12Au6IQE9l9X_hzM5n87Fs9gajJ )?

谢谢!

最佳答案

  • 您想使用 IMAGE() 的公式将 Google 云端硬盘中的图像文件放入电子表格。
    • 在您的例子中,URL 类似于 https://google.com/image.pnghttps://drive.google.com/open?id=###
    • https://google.com/image.png 是外部链接。
    • https://drive.google.com/open?id=### 是您 Google 云端硬盘中的链接。
  • 您想使用 Google Apps 脚本实现这一目标。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

问题和解决方法:

不幸的是,Google 云端硬盘中的图像文件无法使用 IMAGE() 直接放入电子表格。在这种情况下,图像文件需要公开共享。因此,在这个答案中,文件被公开共享并放入电子表格。

修改后的脚本:

当您的脚本修改时,请修改如下。

从:
for (var num = 0; num < source.length; num ++) {
if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
dstSheet.getRange(graphics_placements[num]).setFormula(graphicformula);
}
}
至:
for (var num = 0; num < source.length; num ++) {
if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
var res = source[num][0].match(/drive\.google\.com\/open\?id=(\w.+)|drive\.google\.com\/file\/d\/(\w.+)\//);
if (res && res.length > 0) {
var id = res[1] || res[2];
var file = DriveApp.getFileById(id);
if (file.getOwner().getEmail() != Session.getActiveUser().getEmail()) {
file = file.makeCopy(DriveApp.getRootFolder());
}
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
source[num][0] = "https://drive.google.com/uc?export=download&id=" + id;
}
var graphicformula = '=IMAGE("' + source[num][0] + '",1)';
dstSheet.getRange(dstSheet.getLastRow() + 1, 1).setFormula(graphicformula);
}
}
  • 在示例中,当文件的所有者与您不同时,文件将被复制到您的 Google 云端硬盘的根文件夹中。当你想放置特定的文件夹时,请修改DriveApp.getRootFolder()

备注:

  • 如果包含除 https://drive.google.com/open?id=### 模式之外的 URL,请显示示例 URL。

引用:

添加:

请按如下方式修改脚本中的 for 循环。

修改后的脚本:

var scale = 0.5; // In this case, the imported image is reduces with 50 % from the original size.
var n = 0;
var cellWidth = 0;
for (var num = 0; num < source.length; num ++) {
if (/https?:\/\//.test(source[num][0])) { //Check to ensure a URL has been entered.
var res = source[num][0].match(/drive\.google\.com\/open\?id=(\w.+)|drive\.google\.com\/file\/d\/(\w.+)\//);
var blob = res && res.length > 0 ? DriveApp.getFileById(res[1] || res[2]).getBlob() : UrlFetchApp.fetch(source[num][0]).getBlob();
var lastRow = dstSheet.getLastRow() + 1 + n++;
var image = dstSheet.insertImage(blob, 1, lastRow);
var imageWidth = image.getWidth() * scale;
var imageHeight = image.getHeight() * scale;
cellWidth = cellWidth > imageWidth ? cellWidth : imageWidth;
image.setWidth(imageWidth);
image.setHeight(imageHeight);
dstSheet.setRowHeight(lastRow, imageHeight);
}
}
dstSheet.setColumnWidth(1, cellWidth);
  • 在这种情况下,图像放在单元格上。这不放在单元格中。因此,当您希望将图像大小与单元格大小相匹配时,需要更改单元格大小。在上面的脚本中,dstSheet.setRowHeight(lastRow, imageHeight)dstSheet.setColumnWidth(1, cellWidth) 更改单元格大小。

关于google-apps-script - 使用 Google Apps 脚本将来自 Google 云端硬盘或 URL 的图像插入 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59996906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com