首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像从Google窗体插入到Google幻灯片

将图像从Google窗体插入到Google幻灯片
EN

Stack Overflow用户
提问于 2022-06-03 07:02:42
回答 1查看 148关注 0票数 2

我正在尝试做一个报告,它是从谷歌表单答案中生成的。我找到了一些填充文本的方法,但问题是,我需要在谷歌幻灯片中的报告中添加来自谷歌表单答案的图片。我不是开发人员,所以有人能帮我吗?下面是我尝试过的代码:

代码语言:javascript
复制
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");
 }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-03 08:21:34

我相信你的目标如下。

  • 在你的谷歌表单和脚本中,只有items[11].getResponse()是上传的图像。
  • 你的谷歌幻灯片有多张幻灯片。

使用replaceAllText时,将替换文本。在这种情况下,不能用图像替换文本。而且,我认为items[11].getResponse()的值是文件ID,这就是您出现问题的原因。在您的脚本中,下面的修改如何?

发自:

代码语言:javascript
复制
openSlide.replaceAllText('{Work Item File/Image :}', items[11].getResponse());

至:

代码语言:javascript
复制
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 :}文本。

参考文献:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72485850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档