我需要使用Google Apps脚本反转所选的幻灯片顺序

问题描述

我需要反转所选幻灯片的顺序(如果有选择),否则反转所有幻灯片

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所说, 索引应介于零和演示文稿中的幻灯片数量之间(包括两端)。

移动幻灯片后,整个演示文稿幻灯片都会更改索引,因此,实现目标的最佳方法是先更改最后一张幻灯片,而不要向后更改,因为这样做可以使演示文稿幻灯片的索引保持有序。 / p>

假设您有这种情况,您想更改S1,S2和S4:

redAccent

将第一张幻灯片移动到最后一个位置实际上会得到:

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