如何在 Google 幻灯片 apt 脚本 replaceAllText 中执行请求

How do I execute requests in Google slides apt script replaceAllText

我正在玩一个动态标牌项目,需要一点帮助来完成幻灯片中的一些 GAS。我想要做的就是用 Google 电子表格中(一个单元格)的一些文本替换活动演示文稿中的一些文本。我想我的 Request 语法是正确的,但不确定如何在当前演示文稿上执行 Request,因为我尝试的所有操作似乎都失败了。任何帮助将非常感激。下面的代码包括复制一些幻灯片等的完整脚本(并且正在运行) - 这只是我需要帮助的最后一个请求部分...

    function updateRBFixtures() {

    var srcPresentationId = "1zRvc0H64yvxxxxxxxxxxxxxznmb2usZ_4w6bvRA";
    var copysrcSlideIndex = 0; 

    var copydstSlideIndex = 1; 

    var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];

    SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);


    var selection = SlidesApp.getActivePresentation().getSelection();
    var slide = SlidesApp.getActivePresentation().getSlides()[0];
    slide.remove();

    var dataRangeNotation = 'slideInfo!B2:B2';
    var value = 
    SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();

    requests = [{
    replaceAllText: {
    containsText: {
    text: '{fixtureOneMatch}',
    matchCase: false
    },
   replaceText: value
   }
   }];




   }

这个答案怎么样?

修改点:

  • getValues() returns 二维数组。在您的情况下,该值是从一个单元格中检索的。所以你可以使用 getValue().
  • 在你的情况下,插入幻灯片后,我认为需要使用 saveAndClose()
  • 在您的脚本中,未使用 requests

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

从:
 SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);


 var selection = SlidesApp.getActivePresentation().getSelection();
 var slide = SlidesApp.getActivePresentation().getSlides()[0];
 slide.remove();

 var dataRangeNotation = 'slideInfo!B2:B2';
 var value = 
 SpreadsheetApp.openById("1jiYxxxxxxxxxxxxxxMqtwXnc").getRange(dataRangeNotation).getValues();

 requests = [{
 replaceAllText: {
 containsText: {
 text: '{fixtureOneMatch}',
 matchCase: false
 },
replaceText: value
}
}];
到:
var s = SlidesApp.getActivePresentation();
s.insertSlide(copydstSlideIndex, src);
s.getSlides()[0].remove();
s.saveAndClose();
var dataRangeNotation = 'slideInfo!B2:B2';
var value = SpreadsheetApp.openById("###").getRange(dataRangeNotation).getValue();
var requests = [{
  replaceAllText: {
    containsText: {
      text: '{fixtureOneMatch}',
    },
    replaceText: value,
  }
}];
Slides.Presentations.batchUpdate({requests: requests}, s.getId());

参考文献: