我已经成功地生成了没有图像的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();
})
}
当我看到您的脚本和示例图像(电子表格(时,我可以确认图像的URL,如https://drive.google.com/file/d/###,,,
和const photoImage = (row[2]).split("=")[1];
。在这种情况下,不幸的是,我无法从您的图像中确认您的整个URL,例如,当URL类似于https://drive.google.com/file/d/###,,,?key=value
时,photoImage
就是value
。我想这可能是你问题的原因。
当我想到您当前示例图像中的修改点时,为了从URL中检索文件ID,下面的修改如何?
发件人:
const photoImage = (row[2]).split("=")[1];
收件人:
const photoImage = (row[2]).split("/")[5];
- 这样,当使用示例图像的URL时,可以检索文件ID。但是,如果您没有读取该文件的权限,就会发生错误。请小心