我一直在使用 Google Apps 脚本中的一个函数,尝试从工作表传输图像和数据(两者都来自服务器),然后将格式化的数据和图像传输到 Google 文档。现在,我的数据已经格式化并且运行良好,但是在研究了 Google Apps 脚本中的函数之后,我不完全确定这是否可行。
免责声明:我已经看过 2020 年关于使用 OverGridImage 进行类似操作的帖子,但希望几年后能有修复!!
我以为我能做的是
function sendToCell() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const images = sheet.getImages();
const doc = DocumentApp.create("Cell Images");
const body = doc.getBody();
if (images.length === 0) {
SpreadsheetApp.getUi().alert("cell images not found");
return;
}
images.forEach(image => {
const blob = image.getBlob();
const position = image.getAnchorCell().getA1Notation();
body.appendParagraph(`Image from cell: ${position}`);
body.appendImage(blob);
});
}
这并没有像我想象的那样工作,这可以通过 Apps 脚本实现吗?
getBlob
的方法。 Ref 由此看来,错误发生在const blob = image.getBlob();
。当你的脚本中使用这个库时,它会变成如下所示。
您可以在这里查看如何安装DocsServiceApp。
请在高级 Google 服务中启用 Drive API。
function sendToCell() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const images = DocsServiceApp.openBySpreadsheetId(ss.getId()).getSheetByName(sheet.getSheetName()).getImages();
if (images.length === 0) {
SpreadsheetApp.getUi().alert("cell images not found");
return;
}
const doc = DocumentApp.create("Cell Images");
const body = doc.getBody();
images.forEach(({ range, image }) => {
if (!image.innerCell) {
const blob = image.blob;
const position = range.a1Notation;
body.appendParagraph(`Image from cell: ${position}`);
body.appendImage(blob);
}
});
}
运行此脚本时,DocsServiceApp 会检索单元格上的图像,并将检索到的图像放入创建的 Google 文档中。
if (!image.innerCell) {
和 }
。