- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数组,我正在尝试使用其中的信息来创建 Google 幻灯片演示文稿。我需要一些帮助,如果可能的话,还需要一些我可以阅读的 Material ,以便更好地理解这些问题的可能解决方案。
数组如下:
var myArray = [[Project1,Status1,Info1],[Project2,Status2,Info2],...,[ProjectN,StatusN,InfoN]]
数组中的每个元素都指向一个不同的项目并包含:
它们都是字符串。数组中的元素数量可能会有所不同,但它们将始终遵循此结构。
在演示文稿中,我在主布局内创建了一个新布局,我将其命名为“NEW LAYOUT”。该布局有 4 个组,每个组中有 3 个占位符。每组占位符应该填充不同项目的信息,这意味着一组占位符将填充myArray[i][1]
,myArray[i][ 2]
和 myArray[i][3]
。
到目前为止我的代码如下:
function CreatingSlides() {
var displayName = "NEW LAYOUT"; // Name of the layout that I created
var presentationId = SlidesApp.openById(PageId).getId(); //It is an existing presentation, so I just get its ID
var layouts = Slides.Presentations.get(presentationId).layouts;
var layout = {};
//The following is the array of elements. In this example,
//I only used 4 projects, but it may vary and may not be
//a multiple of 4.
var myArray = [["Project1","Status1","Info1"],["Project2","Status2","Info2"],["Project3","Status3","Info3"],["Project4","Status4","Info4"]];
//This loop searches for the layout that I created
for (i in layouts) {
layout[layouts[i].layoutProperties.displayName] = layouts[i].objectId;
}
//In the slide created, this loop will fill the information in it using the myArray
for (i in myArray) {
var resource = {"requests": [{"createSlide": {"slideLayoutReference": {"layoutId": layout[displayName]},
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "SUBTITLE","index": 0},"objectId":myArray[i][1],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 0},"objectId":myArray[i][2],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 1},"objectId":myArray[i][3],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "SUBTITLE","index": 1},"objectId":myArray[i+1][1],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 2},"objectId":myArray[i+1][2],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 3},"objectId":myArray[i+1][3],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "SUBTITLE","index": 2},"objectId":myArray[i+2][1],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 4},"objectId":myArray[i+2][2],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 5},"objectId":myArray[i+2][3],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "SUBTITLE","index": 3},"objectId":myArray[i+3][1],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 6},"objectId":myArray[i+3][2],},],
"placeholderIdMappings": [{"layoutPlaceholder": {"type": "BODY","index": 7},"objectId":myArray[i+3][3],},],
}
},
{"insertText": {"objectId": myArray[i][1],"text": myArray[i][1],},
"insertText": {"objectId": myArray[i][2],"text": myArray[i][2],},
"insertText": {"objectId": myArray[i][3],"text": myArray[i][3],},
"insertText": {"objectId": myArray[i+1][1],"text": myArray[i+1][1],},
"insertText": {"objectId": myArray[i+1][2],"text": myArray[i+1][2],},
"insertText": {"objectId": myArray[i+1][3],"text": myArray[i+1][3],},
"insertText": {"objectId": myArray[i+2][1],"text": myArray[i+2][1],},
"insertText": {"objectId": myArray[i+2][2],"text": myArray[i+2][2],},
"insertText": {"objectId": myArray[i+2][3],"text": myArray[i+2][3],},
"insertText": {"objectId": myArray[i+3][1],"text": myArray[i+3][1],},
"insertText": {"objectId": myArray[i+3][2],"text": myArray[i+3][2],},
"insertText": {"objectId": myArray[i+3][3],"text": myArray[i+3][3],}},
]};
Slides.Presentations.batchUpdate(resource, presentationId);
}
}
问题 1:当数组中的元素数量可能不同时如何做到这一点?
在此代码中,我仅使用 myArray 中的 4 个元素,因此创建的幻灯片中的所有占位符都将被填充。但是,我不明白如果元素的数量大于 4,我怎么能告诉它创建一个新幻灯片。此外,元素的数量可能不是 4 的倍数(可能是 5,可能是 60,可能72 岁...)。
问题 2:我不知道如何在请求中正确使用 objectIds
这部分内容来 self 在 Google Apps 脚本引用中看到的另一段代码。在其中,我了解到,在请求中,if 首先为 objectId 设置一个名称,然后它使用该名称在该占位符中写入一些内容。然而,这会产生一些问题:objectId 有时不接受我试图给它的名称,或者 objectId 说它不能使用我建议的名称,因为它应该是唯一的。有更好的方法吗?
问题 3:是否可以不必编写 12 行来填充占位符?
我认为这只会发生,因为我不知道如何正确使用 objectId(问题 2)。因此,我必须单独命名幻灯片中的每个 objectId。我相信有一些方法可以使用循环来做到这一点,但到目前为止我还没有找到解决方案或理解它。
最佳答案
首先是一个建议:您混合使用了 Advanced Google Service for Slides和内置的 Slides service (SlidesApp) .如果您只使用 SlidesApp 会简单得多,因为它应该可以满足您的需求,您无需担心获取正确的 objectId。
回答您的问题:
这里的问题是您的布局中只有 12 个占位符。尝试填充超过该数量的它们是行不通的,因为您将用完所有占位符来填充。您的选择是:不使用占位符,而是创建和定位文本框,或者以不同的方式呈现您的数据。例如,每个项目使用 1 张幻灯片,其中包含 3 个占位符,一个用于项目名称、状态和信息。
我建议您手动创建一个示例幻灯片来设计您希望最终幻灯片的外观,然后反向编写代码来生成它。通常在幻灯片上使用 {{project_1}}: {{status_1}}
等可变字符串执行 ReplaceAllText 会非常有效。
尝试为占位符提供对象 ID,然后使用 InsertText 设置内容,您走在了正确的轨道上。我认为您的问题是 placeholderIdMappings 不正确,您需要一个映射对象列表,而不是多次指定 placeholderIdMappings 键(参见 sample)。
{
"createSlide": {
"objectId": pageId,
"slideLayoutReference": {
"layoutId": "layoutId"
},
"placeholderIdMappings": [
{
"layoutPlaceholder": {
"type": "SUBTITLE",
"index": 0
},
"objectId": "project1Id",
},
{
"layoutPlaceholder": {
"type": "BODY",
"index": 0
},
"objectId": "project1Id",
},
],
}
}
我认为这主要是由于您构建项目数据的方式、幻灯片的布局以及 placeholderIdMappings 问题。解决这些问题应该会让这件事更容易处理。
它也应该更容易处理 SlidesApp(使用 Slide#getPlaceholder )
关于javascript - 谷歌应用程序脚本 : How to create slides on Google Slides and fill the placeholders in it with information from an array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415525/
我正在通过 labrepl 工作,我看到了一些遵循此模式的代码: ;; Pattern (apply #(apply f %&) coll) ;; Concrete example user=> (a
我从未向应用商店提交过应用,但我会在不久的将来提交。 到目前为止,我对为 iPhone 而非 iPad 进行设计感到很自在。 我了解,通过将通用PAID 应用放到应用商店,客户只需支付一次就可以同时使
我有一个应用程序,它使用不同的 Facebook 应用程序(2 个不同的 AppID)在 Facebook 上发布并显示它是“通过 iPhone”/“通过 iPad”。 当 Facebook 应用程序
我有一个要求,我们必须通过将网站源文件保存在本地 iOS 应用程序中来在 iOS 应用程序 Webview 中运行网站。 Angular 需要服务器来运行应用程序,但由于我们将文件保存在本地,我们无法
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
假设我有一个安装在用户设备上的 Android 应用程序 A,我的应用程序有一个 AppWidget,我们可以让其他 Android 开发人员在其中以每次安装成本为基础发布他们的应用程序推广广告。因此
Secrets of the JavaScript Ninja中有一个例子它提供了以下代码来绕过 JavaScript 的 Math.min() 函数,该函数需要一个可变长度列表。 Example:
当我分别将数组和对象传递给 function.apply() 时,我得到 NaN 的 o/p,但是当我传递对象和数组时,我得到一个数字。为什么会发生这种情况? 由于数组也被视为对象,为什么我无法使用它
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章ASP转换格林威治时间函数DateDiff()应用由作者收集整理,如果你
我正在将列表传递给 map并且想要返回一个带有合并名称的 data.frame 对象。 例如: library(tidyverse) library(broom) mtcars %>% spl
我有一个非常基本的问题,但我不知道如何实现它:我有一个返回数据框,其中每个工具的返回值是按行排列的: tmp<-as.data.frame(t(data.frame(a=rnorm(250,0,1)
我正在使用我的 FB 应用创建群组并邀请用户加入我的应用群组,第一次一切正常。当我尝试创建另一个组时,出现以下错误: {"(OAuthException - #4009) (#4009) 在有更多用户
我们正在开发一款类似于“会说话的本”应用程序的 child 应用程序。它包含大量用于交互式动画的 JPEG 图像序列。 问题是动画在 iPad Air 上播放正常,但在 iPad 2 上播放缓慢或滞后
我关注 clojure 一段时间了,它的一些功能非常令人兴奋(持久数据结构、函数式方法、不可变状态)。然而,由于我仍在学习,我想了解如何在实际场景中应用,证明其好处,然后演化并应用于更复杂的问题。即,
我开发了一个仅使用挪威语的应用程序。该应用程序不使用本地化,因为它应该仅以一种语言(挪威语)显示。但是,我已在 Info.plist 文件中将“本地化 native 开发区域”设置为“no”。我还使用
读完 Anthony's response 后上a style-related parser question ,我试图说服自己编写单体解析器仍然可以相当紧凑。 所以而不是 reference ::
multicore 库中是否有类似 sapply 的东西?还是我必须 unlist(mclapply(..)) 才能实现这一点? 如果它不存在:推理是什么? 提前致谢,如果这是一个愚蠢的问题,我们深表
我喜欢在窗口中弹出结果,以便更容易查看和查找(例如,它们不会随着控制台继续滚动而丢失)。一种方法是使用 sink() 和 file.show()。例如: y <- rnorm(100); x <- r
我有一个如下所示的 spring mvc Controller @RequestMapping(value="/new", method=RequestMethod.POST) public Stri
我正在阅读 StructureMap关于依赖注入(inject),首先有两部分初始化映射,具体类类型的接口(interface),另一部分只是实例化(请求实例)。 第一部分需要配置和设置,这是在 Bo
我是一名优秀的程序员,十分优秀!