将图像从 Google 表单插入到 Google 幻灯片
Insert Image From Google Form to Google Slides
我正在尝试制作一份根据 google 表单答案生成的报告。我找到了一些填充文本的方法,但问题是我需要在 google 幻灯片的报告中添加来自 google 表单答案的图像。我不是开发人员,所以有人可以帮助我吗?这是我试过的代码:
function onFormSubmit(e) {
//open the template presentation by ID
var templateDoc = DriveApp.getFileById('1ytA5aje8eTW4tQOf9U_DCKlpLrnLYZna3KIvjz9rx1Q');
//create a copy of the template
var newTempFile = templateDoc.makeCopy();
//open the presentation for editing
var openSlide = SlidesApp.openById(newTempFile.getId());
//get the responses triggered by On Form Submit
var items = e.response.getItemResponses();
//var amountof_item = items[4].getResponse();
//find the text in the presentation and replace it with the Form response
//items[0].getResponse() is the first response in the Form
openSlide.replaceAllText('{PM In Charge :}', items[0].getResponse());
openSlide.replaceAllText('{Homeowner Name :}', items[1].getResponse());
openSlide.replaceAllText('{Location :}', items[2].getResponse());
openSlide.replaceAllText('{Week :}', items[3].getResponse());
openSlide.replaceAllText('{Report Date :}', items[4].getResponse());
openSlide.replaceAllText('{Start Date :}', items[6].getResponse());
openSlide.replaceAllText('{End Date :}', items[7].getResponse());
openSlide.replaceAllText('{Rooms :}', items[8].getResponse());
openSlide.replaceAllText('{Work Item :}', items[9].getResponse());
openSlide.replaceAllText('{Work Item Progress :}', items[10].getResponse());
openSlide.replaceAllText('{Work Item File/Image :}', items[11].getResponse());
//Save and Close the open document
openSlide.saveAndClose();
DriveApp.getFileById(newTempFile.getId()).setName(items[1].getResponse() + "-" + items[3].getResponse() + "-Progress");
}
我相信你的目标如下。
- 在您的 Google 表单和脚本中,只有
items[11].getResponse()
是上传的图片。
- 您的 Google 幻灯片有多张幻灯片。
当使用replaceAllText
时,文本被替换。在这种情况下,文本不能用图像替换。而且,我认为 items[11].getResponse()
的值是文件 ID。这就是你的问题的原因。在您的脚本中,进行以下修改怎么样?
发件人:
openSlide.replaceAllText('{Work Item File/Image :}', items[11].getResponse());
收件人:
var image = items[11].getResponse();
openSlide.getSlides().forEach(s => {
s.getShapes().forEach(e => {
if (e.getText().asString().trim() == '{Work Item File/Image :}') {
e.replaceWithImage(DriveApp.getFileById(Array.isArray(image) ? image[0] : image).getBlob());
}
})
});
- 当此脚本为运行时,从
items[11].getResponse()
中检索图像文件的文件ID,并从文件中检索blob,然后将图像blob替换为文本每页 {Work Item File/Image :}
。
参考文献:
我正在尝试制作一份根据 google 表单答案生成的报告。我找到了一些填充文本的方法,但问题是我需要在 google 幻灯片的报告中添加来自 google 表单答案的图像。我不是开发人员,所以有人可以帮助我吗?这是我试过的代码:
function onFormSubmit(e) {
//open the template presentation by ID
var templateDoc = DriveApp.getFileById('1ytA5aje8eTW4tQOf9U_DCKlpLrnLYZna3KIvjz9rx1Q');
//create a copy of the template
var newTempFile = templateDoc.makeCopy();
//open the presentation for editing
var openSlide = SlidesApp.openById(newTempFile.getId());
//get the responses triggered by On Form Submit
var items = e.response.getItemResponses();
//var amountof_item = items[4].getResponse();
//find the text in the presentation and replace it with the Form response
//items[0].getResponse() is the first response in the Form
openSlide.replaceAllText('{PM In Charge :}', items[0].getResponse());
openSlide.replaceAllText('{Homeowner Name :}', items[1].getResponse());
openSlide.replaceAllText('{Location :}', items[2].getResponse());
openSlide.replaceAllText('{Week :}', items[3].getResponse());
openSlide.replaceAllText('{Report Date :}', items[4].getResponse());
openSlide.replaceAllText('{Start Date :}', items[6].getResponse());
openSlide.replaceAllText('{End Date :}', items[7].getResponse());
openSlide.replaceAllText('{Rooms :}', items[8].getResponse());
openSlide.replaceAllText('{Work Item :}', items[9].getResponse());
openSlide.replaceAllText('{Work Item Progress :}', items[10].getResponse());
openSlide.replaceAllText('{Work Item File/Image :}', items[11].getResponse());
//Save and Close the open document
openSlide.saveAndClose();
DriveApp.getFileById(newTempFile.getId()).setName(items[1].getResponse() + "-" + items[3].getResponse() + "-Progress");
}
我相信你的目标如下。
- 在您的 Google 表单和脚本中,只有
items[11].getResponse()
是上传的图片。 - 您的 Google 幻灯片有多张幻灯片。
当使用replaceAllText
时,文本被替换。在这种情况下,文本不能用图像替换。而且,我认为 items[11].getResponse()
的值是文件 ID。这就是你的问题的原因。在您的脚本中,进行以下修改怎么样?
发件人:
openSlide.replaceAllText('{Work Item File/Image :}', items[11].getResponse());
收件人:
var image = items[11].getResponse();
openSlide.getSlides().forEach(s => {
s.getShapes().forEach(e => {
if (e.getText().asString().trim() == '{Work Item File/Image :}') {
e.replaceWithImage(DriveApp.getFileById(Array.isArray(image) ? image[0] : image).getBlob());
}
})
});
- 当此脚本为运行时,从
items[11].getResponse()
中检索图像文件的文件ID,并从文件中检索blob,然后将图像blob替换为文本每页{Work Item File/Image :}
。