Изменение цвета шаблона Slide с помощью скрипта приложения - PullRequest
0 голосов
/ 08 мая 2019

У меня есть созданный шаблон слайдов, в котором несколько команд будут использовать его для создания информационного листа об их соответствующем процессе. Этот контент предназначен для производства стандартизированным способом.

Чтобы упростить задачу, я создал лист, на котором ключевая информация может вводиться в ячейки для заполнения элементов шаблона.

У меня проблема в том, что я хочу, чтобы у каждого процесса была своя цветовая схема. Есть ли способ, которым я могу установить ячейку на нужный шрифт или цвет фона в листах, а затем получить шаблон для создания в этом цвете? или даже цветовая гамма?

Spreadsheet Input for template

Как выделить определенный текст или текстовые поля на слайде, чтобы установить цвет фона?

Example of Slide Желаемое решение

Любая помощь очень ценится

// Add a custom menu to the active spreadsheet, including a separator and a sub-menu.
function onOpen(e) {
  SpreadsheetApp.getUi()
  .createMenu('Templates')
  .addItem('Cheat Sheet', 'createNewCase')
  .addToUi();
}

function createNewCase(input) {
  var category = input
  var ui = SpreadsheetApp.getUi();

  // get active spreadsheet
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = activeSpreadsheet.getActiveSheet();

  // Check to ensure script being run from 'Option 1' sheet
  if (activeSheet.getName() != "Sheet1") {
  ui.alert("Active sheet must be 'Sheet1', terminating script");
  return;
  }  

  //Get active cell
  var sourceRow = activeSheet.getActiveCell().getRow();

  // Read case variables
  var sourceProcess = activeSheet.getRange('A' + sourceRow).getValue();
  var sourceName1 = activeSheet.getRange('B' + sourceRow).getValue();
  var sourceName2 = activeSheet.getRange('C' + sourceRow).getValue();
  var sourceTeam = activeSheet.getRange('D' + sourceRow).getValue();
  var sourcePurpose = activeSheet.getRange('E' + sourceRow).getValue();
  var sourceDef = activeSheet.getRange('F' + sourceRow).getValue();
  var sourceColor = activeSheet.getRange('G' + sourceRow).getFontColor();

  // Message prompt
  var userChoice = ui.alert("You are about to generate a Cheat Sheet template for " + sourceProcess +"\n\nDo you wish to continue?\n\n",ui.ButtonSet.YES_NO);
  if (userChoice == ui.Button.NO) {
  ui.alert("Terminating script");
  return;
  } 

  //Set case document filename
  var newFilename = sourceProcess + "Process Cheat Sheet"

  //Get template folder
  var templateFolder = DriveApp.getFolderById("1MCQn9_oiaaUt4_dNzr2EoDWkUGsYOH-O");

  // Get case Template document
  var docTemplate = DriveApp.getFileById("1cmm1ifvfRv7omGVmRhD0zunCngBcIY_qo2jpCA_sHV4"); 
  var caseDocument = docTemplate.makeCopy(newFilename);

  var caseDocumentID = caseDocument.getId();
  var caseSlide = SlidesApp.openById(caseDocumentID);
  var caseName1 = caseSlide.replaceAllText("%NAME1%", sourceName1);
  var caseName2 = caseSlide.replaceAllText("%NAME2%", sourceName2);
  var caseProcess = caseSlide.replaceAllText("%PROCESS%", sourceProcess);
  var caseTeam = caseSlide.replaceAllText("%TEAM%", sourceTeam);
  var casePurpose = caseSlide.replaceAllText("%PURPOSE%", sourcePurpose);
  var caseDef = caseSlide.replaceAllText("%DEFINITION%", sourceDef);

  // Record Case Document link      
  activeSheet.getRange('H' + (sourceRow)).setFormula('=HYPERLINK("' + caseDocument.getUrl() + '", "Cheat Sheet Template")');
}
...