尝试从工作表中移动数据以自动填充 Google 幻灯片中的模板。我已经让它工作了,但是,我希望它保留形状字体的颜色。形状只是带有颜色的字体。关于我需要添加什么有什么想法吗? (第一次来这里:)
我的代码如下:
function createOneSlidePerRow() {
let masterDeckID = "deck ID";
let masterSheetID= "sheet ID"
let deck = SlidesApp.openById(masterDeckID);
let slides = deck.getSlides();
let masterSlide = slides[1];
let dataRange = SpreadsheetApp.openById(masterSheetID).getDataRange();
let sheetContents = dataRange.getValues();
let header = sheetContents.shift();
let updatedContents = [];
sheetContents.reverse();
sheetContents.forEach(function (row) {
let slide = masterSlide.duplicate();
slide.replaceAllText("{{full_name}}", row[0]);
slide.replaceAllText("{{symbol_1}}", row[1]);
slide.replaceAllText("{{symbol_2}}", row[2]);
slide.replaceAllText("{{symbol_3}}", row[3]);
}
我发现了这个,但我不知道如何适应:Google Apps 脚本:用工作表中的值和格式替换幻灯片表中的所有文本
根据您更新的问题,以下修改如何?
在使用此脚本之前,请先设置
masterDeckID
和masterSheetID
。
function createOneSlidePerRow() {
let masterDeckID = "deck ID";
let masterSheetID = "sheet ID"
let deck = SlidesApp.openById(masterDeckID);
let slides = deck.getSlides();
let masterSlide = slides[1];
let dataRange = SpreadsheetApp.openById(masterSheetID).getDataRange();
// I modified the below script.
const [header, ...values] = dataRange.getValues();
const [, ...colors] = dataRange.getFontColorObjects();
values.forEach((row, i) => {
let slide = masterSlide.duplicate();
slide.getShapes().forEach(s => {
header.forEach((h, j) => {
const text = s.getText();
if (text.replaceAllText(h, row[j]) != 0) {
const c = colors[i][j].asRgbColor().asHexString();
text.getTextStyle().setForegroundColor(c.length > 7 ? "#000000" : c);
}
});
});
});
}