Использование листов для создания слайда Google - PullRequest
0 голосов
/ 23 мая 2019

У меня есть информация в листе Google, которую я хотел бы разместить на шаблоне Google Slide. В основном, основываясь на информации в Google листе, я хотел бы создать шестиугольное текстовое поле с текстом, извлеченным из листа. Google лист также будет определять расположение макета слайда и цвет заливки для каждого шестиугольника. Шаблон слайдов Информация о листе Я успешно создал рабочий шаблон для первой строки моего листа Google, Пример Однако я хотел бы теперь иметь возможность построения нескольких текстовых полей на листе. Пример листа

Желаемый результат

Мне нужен сценарий для итерации или циклического перемещения по строкам / диапазонам листа и заполнения слайда шестиугольными фигурами.

function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('Templates')
      .addItem('HeatMap', '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 current user information to make sure only correct users can run
    var userValidated = false;
    var userEmail = Session.getActiveUser().getEmail();


      if (userEmail == "xxxxxx@xxx.co.uk" || userEmail == "xxxxx@xxxx.co.uk" ) {
        userValidated = true;
      } else {
        ui.alert("Only the xxxx team can generate a Template. Please contact them for assistance, terminating script");
      return;
    }  


    //Get active cell

    var sourceRow = activeSheet.getActiveCell().getRow();



    // Read case variables

    var sourceTeam = activeSheet.getRange('A' + sourceRow).getValue();
    var sourceRisk = activeSheet.getRange('C' + sourceRow).getValue();
    var sourceRef = activeSheet.getRange('B' + sourceRow).getValue();
    var sourceWidth = activeSheet.getRange('E' + sourceRow).getValue();
    var sourceHeight = activeSheet.getRange('F' + sourceRow).getValue();
     var sourceColour = activeSheet.getRange('G' + sourceRow).getValue();







    // Message prompt

  var userChoice = ui.alert("You are about to generate a Risk Heatmap for " + sourceTeam +"\n\nDo you wish to continue?\n\n",ui.ButtonSet.YES_NO);
    if (userChoice == ui.Button.NO) {
      ui.alert("Terminating script");
      return;
    } 

    //Get todays date 

    var nowShort = Utilities.formatDate(new Date(), "Europe/London", "yyMMdd");
    var nowFormattedDateTime = Utilities.formatDate(new Date(), "Europe/London", "EEE d MMM yyyy HH:mm");



    //Set case document filename

    var newFilename = sourceTeam + " Risk Heatmap"

    //Get template folder

    var templateFolder = DriveApp.getFolderById("xxxxxx");

    // Get case Template document

    var docTemplate = DriveApp.getFileById("xxxxxxx"); 
    var caseDocument = docTemplate.makeCopy(newFilename);       
    var caseDocumentID = caseDocument.getId();
    var caseSlide = SlidesApp.openById(caseDocumentID);
    var activeSlide = caseSlide.getSlideById('xxxxxxx')
    var shape = activeSlide.insertShape(SlidesApp.ShapeType.HEXAGON,sourceWidth,sourceHeight,80,40);
    var textRange = shape.getText();
    var textCol =shape.getFill().setSolidFill(sourceColour)
    var insertedText = textRange.appendText(sourceRef +" - "+ sourceRisk);
    insertedText.getTextStyle()
    .setForegroundColor('#000000')
    .setFontSize(8)


    var caseProcess = caseSlide.replaceAllText("%TEAM NAME%", sourceTeam);
    var dateTime = caseSlide.replaceAllText("%DATE%", nowFormattedDateTime);


  // Record Case Document link      
    activeSheet.getRange('H' + (sourceRow)).setFormula('=HYPERLINK("' + caseDocument.getUrl() + '", "Risk Heatmap")');

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...