Почему боковая панель настроена для работы с функцией onOpen, которая не отображается при создании копии исходной электронной таблицы? - PullRequest
0 голосов
/ 02 октября 2019

Я делюсь электронной таблицей / приложением, предназначенным для использования в качестве инструмента оценки для некоторых коллег. Я хочу, чтобы они сделали копию исходной электронной таблицы (шаблона) и работали самостоятельно, чтобы они не перекрывались при отправке ответов.

Сначала я настроил оповещение, и оно работало отлично. При создании копии она снова появлялась при открытии копии. Затем я настроил боковую панель, и это не работает. Они оба работают на одной и той же функции onOpen, и основное отличие между ними состоит в том, что на боковой панели есть HTML.

Это код .gs:

//Displays spreadsheet use instructions.
fu
nction showInstructions() {
  var ui = SpreadsheetApp.getUi().alert('¡Recuerda leer las instrucciones de uso antes de comenzar!');
}

//Displays thanks banner after submitting form.
function showThanks() {
  var ui = SpreadsheetApp.getUi().alert('¡Gracias por participar!');
}

//Pops instructions and creates menus.
function onOpen() {   

  showInstructions();
  showSidebar();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuButtons = [ {name: "Submit", functionName: "submit"}];
  ss.addMenu("BIMmx", menuButtons);
}

function submit() {
  askName();
  copyData();
  showThanks();
  clear();
}

//Show sidebar with instructions.
function showSidebar() {
  var output = HtmlService.createHtmlOutputFromFile('sidebar').setTitle('Instrucciones');
  SpreadsheetApp.getUi().showSidebar(output);
}

//Asks for user name before submitting data to master sheet.
function askName() {

  var ui = SpreadsheetApp.getUi();

  //Display prompt.
  var result; 
  var text = "";

  while (text == ""){
    result = ui.prompt(
      '¡Completa la evaluación!',
      'Ingresa tu nombre:',
      ui.ButtonSet.OK_CANCEL);

    // Process user's response.
    var button = result.getSelectedButton();
    text = result.getResponseText();
    if (text == "") 
      ui.alert('Nombre no puede estar vacío.');
    else if (button == ui.Button.OK) {
      // User clicked "OK".
      ui.alert('Tu nombre es ' + text + '.');
    } else if (button == ui.Button.CANCEL) {
      // User clicked "Cancel".
      ui.alert('No entendí eso.');
    } else if (button == ui.Button.CLOSE) {
      // User clicked X in the title bar.
      ui.alert('Cerraste el diálogo.');
    }


  }

 fillUser(text);

}

//Fills rows with submitting username.
function fillUser(result) {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange("K2").setValue(result);  
  var lr = ss.getLastRow();
  var lc = ss.getLastColumn();
  var fillDownRange = ss.getRange(2, lc, lr-1);
  ss.getRange("K2").copyTo(fillDownRange);
}

//Backup data to master spreadsheet.  
function copyData() {

  var sss=SpreadsheetApp.getActive();
  var sh=sss.getSheetByName('Input');  
  var rg=sh.getRange(2,1,sh.getLastRow()-1,11);
  var sData=rg.getValues().join(";");

  //Cambiar por dirección del nuevo servicio web
  var url = "https://script.google.com/macros/s/AKfycbywmtl7mpwd0RO2bS-bvFuYFlo-7Nv3zPTvphwjIDa0GwERTV8/exec";  

  var payload = {    
    "sData" : JSON.stringify(sData),    
  }

  var options = {
    "method" : "POST",
    "payload" : payload,
    "followRedirects" : true,
    "muteHttpExceptions" : true,
  };

  var result = UrlFetchApp.fetch(url, options);
  //Logger.log(JSON.parse(result));  


}

//Clean sheet once submission is done.  
function clear() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Input');
  sheet.getRange('A2:K').clearContent();
}

Это HTML-код:

<!DOCTYPE html>
<html>
  <head>
  <base target="_top">
  </head>
  <body>
    <iframe width="300" height="168.75" frameborder="0" src="https://www.youtube.com/embed/T2pCuKOoo3I" allowfullscreen></iframe>
    <p>
     - Haz una copia del documento marcado como (Template) y trabaja sobre ella.
    </p>
    <p>
    1. Renombra la copia que creaste como “RecursosHumanos-EvaluadorDeDesempeno-TuNombre.
    </p>
    <p>
    2. Lee los comentarios de cada rubro a evaluar desplazando el cursor/mouse por su encabezado.
    </p>
    <p>
    3. Evalúa a tus colegas.
    </p>
    <p>
    4. Incluye tu nombre y usa tu fila como auto-evaluación.
    </p>
    <p>
    5. Ingresa los datos en el menú BIMmx > Submit.
    </p>
  </body>
</html>

Кто-нибудь знает, есть ли способ сделать всплывающую боковую панель также при копировании? Спасибо за помощь!

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