我需要使用 Google Apps 脚本反转选定的幻灯片顺序
I need to reverse the selected slide order using Google Apps script
我需要反转所选幻灯片的顺序(如果有选择)否则反转所有幻灯片。
here is the code script editor file
示例幻灯片 2 和幻灯片 4 选择后执行代码
之前:S1,S2,S3,S4
预期结果:S1、S4、S3、S2
如果没有选择幻灯片
之前:S1,S2,S3,S4
预期结果:S4、S3、S2、S1
如果选择幻灯片 1、幻灯片 2 和幻灯片 4
之前:S1,S2,S3,S4
预期结果:S4、S2、S3、S1
我试过
selectedArrayIndex = selectedArrayIndex.reverse();
for (var k = selectedArrayIndex.length - 1; k >= 0; k--) {
allSlides[k].move(selectedArrayIndex[k] + 1);
}
回答
根据 documentation 所说 索引应介于零和演示文稿中的幻灯片数量之间,包括在内。
移动一张幻灯片后,整个演示幻灯片都会更改它们的索引,因此实现目标的最佳方法是先更改最后一张幻灯片,而不是向后更改,因为这样做可以使演示幻灯片的索引保持有序.
假设您有这种情况,您想要更改 S1、S2 和 S4:
S1 -> index 1
S2 -> index 2
S3 -> index 3
S4 -> index 4
将第一张幻灯片移动到最后一个位置实际得到的是:
First step Second step Third step
S2 -> index 1 | S3 -> index 1 | S3 -> index 1
S3 -> index 2 | S2 -> index 2 | S4 -> index 2
S4 -> index 3 | S4 -> index 3 | S2 -> index 3
S1 -> index 4 | S1 -> index 4 | S1 -> index 4
将最后一张幻灯片移动到第一个位置得到的结果是:
First step Second step Third step
S4 -> index 1 | S4 -> index 1 | S4 -> index 1
S1 -> index 2 | S2 -> index 2 | S2 -> index 2
S2 -> index 3 | S1 -> index 3 | S3 -> index 3
S3 -> index 4 | S3 -> index 4 | S1 -> index 4
代码
为了获得预期的行为,您应该在代码的最后一个循环中使用此代码。
// selectedArrayIndex = selectedArrayIndex.reverse(); No need to reverse the array
var len = selectedArrayIndex.length
for (var k = len - 1; k >= 0; k--) {
allSlides[selectedArrayIndex[k]].move(selectedArrayIndex[len - 1 - k] + 1);
}
我需要反转所选幻灯片的顺序(如果有选择)否则反转所有幻灯片。
here is the code script editor file
示例幻灯片 2 和幻灯片 4 选择后执行代码
之前:S1,S2,S3,S4
预期结果:S1、S4、S3、S2
如果没有选择幻灯片
之前:S1,S2,S3,S4
预期结果:S4、S3、S2、S1
如果选择幻灯片 1、幻灯片 2 和幻灯片 4
之前:S1,S2,S3,S4
预期结果:S4、S2、S3、S1
我试过
selectedArrayIndex = selectedArrayIndex.reverse();
for (var k = selectedArrayIndex.length - 1; k >= 0; k--) {
allSlides[k].move(selectedArrayIndex[k] + 1);
}
回答
根据 documentation 所说 索引应介于零和演示文稿中的幻灯片数量之间,包括在内。
移动一张幻灯片后,整个演示幻灯片都会更改它们的索引,因此实现目标的最佳方法是先更改最后一张幻灯片,而不是向后更改,因为这样做可以使演示幻灯片的索引保持有序.
假设您有这种情况,您想要更改 S1、S2 和 S4:
S1 -> index 1
S2 -> index 2
S3 -> index 3
S4 -> index 4
将第一张幻灯片移动到最后一个位置实际得到的是:
First step Second step Third step
S2 -> index 1 | S3 -> index 1 | S3 -> index 1
S3 -> index 2 | S2 -> index 2 | S4 -> index 2
S4 -> index 3 | S4 -> index 3 | S2 -> index 3
S1 -> index 4 | S1 -> index 4 | S1 -> index 4
将最后一张幻灯片移动到第一个位置得到的结果是:
First step Second step Third step
S4 -> index 1 | S4 -> index 1 | S4 -> index 1
S1 -> index 2 | S2 -> index 2 | S2 -> index 2
S2 -> index 3 | S1 -> index 3 | S3 -> index 3
S3 -> index 4 | S3 -> index 4 | S1 -> index 4
代码
为了获得预期的行为,您应该在代码的最后一个循环中使用此代码。
// selectedArrayIndex = selectedArrayIndex.reverse(); No need to reverse the array
var len = selectedArrayIndex.length
for (var k = len - 1; k >= 0; k--) {
allSlides[selectedArrayIndex[k]].move(selectedArrayIndex[len - 1 - k] + 1);
}