我想从谷歌电子表格数据库中获取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();
})

}

当我看到您的脚本和示例图像(电子表格(时,我可以确认图像的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。但是,如果您没有读取该文件的权限,就会发生错误。请小心

最新更新