首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效地将图像添加到Google电子表格中

有效地将图像添加到Google电子表格中
EN

Stack Overflow用户
提问于 2020-12-04 11:53:10
回答 1查看 89关注 0票数 1

我正在探索使用GAS脚本构建一个人类可读的产品目录,作为Google电子表格,从那里生成PDF或打印很容易。所有产品数据都可以通过API快速访问,包括每个产品的图像URL。

我遇到了问题,因为插入一个引用URL的图像,然后在我的原型中重新调整它的大小需要3-4秒,而且我可能有150倍的产品。运行时上限为6分钟。下面是我想象的图像处理循环的一个简化示例:

代码语言:javascript
复制
function insertImages(sheet, array_of_urls) {

  for (var i in array_of_urls) {
  
    let image = sheet.insertImage(list_of_urls[i], 1, (i+1)*3);
    
    image.setWidth(90);
    image.setHeight(90);
    
  }
  
}

我认为这需要很长时间,因为它与UI的交互。有人能推荐一种使脚本在功能上高效的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 13:33:01

在单元格上插入图像:

如果您想要图像over cells (也就是说,不包含在一个特定的单元格中),我不认为有什么方法可以大大加快速度。没有一次插入多个图像的方法。

您最多可以尝试检索图像块,在插入图像之前通过第三方调整图像大小,最后通过insertImage(blobSource,列,行)插入它们。

无论如何,有一些方法可以通过6分钟的执行时间限制。参见,例如,这个答案

在单元格中插入图像:

如果在特定的单元格(而不是over cells )中的图像没有问题,我建议使用setFormulas通过图像公式添加图像。

可以通过IMAGE公式设置图像大小,方法如下:

代码语言:javascript
复制
=IMAGE("URL", 4, [height in pixels], [width in pixels])

此外,为了确保单元格的高度足够大,以便可以看到图像,可以使用setRowHeights

代码片段:

代码语言:javascript
复制
function insertImages(sheet, array_of_urls) {
  const formulas = array_of_urls.map(url => ["=IMAGE(\"" + url + "\", 4, 90, 90)"]);
  const firstRow = 1;  
  sheet.getRange(firstRow,1,formulas.length,formulas[0].length).setFormulas(formulas);
  sheet.setRowHeights(firstRow, formulas.length, 90);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65143090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档