我需要使用 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);
}