google-apps-script - 我想从谷歌文档中的谷歌电子表格数据库中获取带有图像的pdf作为模板
问题描述
我已经成功地生成了没有图像的 pdf,但是当我在电子表格中添加图片希望我可以在我的 pdf 文件中获取我的图片时,脚本不起作用。谁能帮助我脚本中的错误在哪里?//try image
请使用导致我的脚本无法生成带图像的 pdf的标签检查我的脚本。
function buatPdf() {
var docTemplate = DriveApp.getFileById('ID Template');
var folderTujuan = DriveApp.getFolderById('ID Folder')
//try image
var replaceTextToImage = function(body, searchText, fileId) {
var width = 100;
var blob = DriveApp.getFileById(fileId).getBlob();
var r = body.findText(searchText).getElement();
r.asText().setText("");
var img = r.getParent().asParagraph().insertInlineImage(0, blob);
var w = img.getWidth();
var h = img.getHeight();
img.setWidth(width);
img.setHeight(width * h / w);
}
var sheet = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName('Data')
var rows = sheet.getDataRange().getValues();
rows.forEach(function(row, index){
if (index === 0) return;
var copy = docTemplate.makeCopy(`${row[0]} ${row[1]}` , folderTujuan)
var doc = DocumentApp.openById(copy.getId())
var body = doc.getBody();
//photo
var photoImage = (row[2]).split("=")[1]; //try image
body.replaceText('{{IDstd}}', row[0]);
body.replaceText('{{Name}}', row[1]);
replaceTextToImage(body,'{{Photo}}', photoImage);//try image
body.replaceText('{{Hobby}}', row[4]);
doc.saveAndClose();
})
}
解决方案
当我看到您的脚本和您的示例图片(电子表格)时,我可以确认图片的 URLhttps://drive.google.com/file/d/###,,,
和const photoImage = (row[2]).split("=")[1];
. 在这种情况下,很遗憾,我无法从您的图像中确认您的整个 URL,例如,当 URL 像https://drive.google.com/file/d/###,,,?key=value
, photoImage
is时value
。我认为这可能是您的问题的原因。
当我从您当前的示例图像中想到修改点时,为了从 URL 中检索文件 ID,以下修改如何?
从:
const photoImage = (row[2]).split("=")[1];
至:
const photoImage = (row[2]).split("/")[5];
- 这样,当您使用示例图像的 URL 时,可以检索文件 ID。但是,如果您没有读取文件的权限,则会发生错误。请注意这一点。
推荐阅读
- google-bigquery - 在 BigQuery 上修改或删除作业
- oracle - 检查以确保主机已启动或数据库侦听器正在该主机上运行
- python - 在 tkinter Python 中使用 .after() 函数进行倒计时后标签未更新
- python - 当顺序无关紧要时删除列表列表中的任何重复项(例如,[1,2,3] 和 [1,3,2] 是重复集)?
- python - Python & SQL Server 存储过程挂起
- dart - Dart:难以理解的匿名函数
- r - 当单元格与特定字符串匹配时,如何替换单元格的内容?
- azure-web-app-service - 无法使用 docker-maven-plugin 推送到 Azure 注册表
- javascript - 为什么我的 Express 服务器对 index.html 以外的所有文件都响应 404?
- python - Apache2 + mod_wsgi + 子域的多个虚拟主机