«Невозможно вызвать SpreadsheetApp.getUi () из контекста» при попытке запуска вручную - PullRequest
0 голосов
/ 19 ноября 2018

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

Кто-нибудь знает, есть ли обновление или что-то связанное с этим? может я что то не так делаю? Если это так, я вставил код ниже

function addProject() {
  var ui = SpreadsheetApp.getUi();

  //var listDepartment = ss.getRangeByName("ref_departments").getValues().filter(String);
   // var projectSheet = ss.getSheetByName('Project Overview');

  var nameResponse = ui.prompt("What is the name of this project?");
  var projectName = nameResponse.getResponseText(); 

  var roleResponse = ui.prompt("How Many Resource/Roles are required for this project?");
  var roleCount = parseInt(roleResponse.getResponseText());

//   var validateDepartment = SpreadsheetApp.newDataValidation()
//  .requireValueInList(listDepartment)
//  .build();

 // var color = ss.getRangeByName("refColor").getValue();

  var lastRow = projectSheet.getLastRow();
  var lastCol = projectSheet.getMaxColumns();

  projectSheet.getRange(lastRow+1, 1)
  .setValue(projectName)
  .setVerticalAlignment("middle")
  .setHorizontalAlignment("Center")
  .setFontSize(16)
  .setWrap(true)
  .setFontWeight("bold")
  .copyTo(projectSheet.getRange(lastRow+2, 1, roleCount-1, 1));

  projectSheet.getRange(lastRow+1, 2, roleCount, 1).setDataValidation(validateDepartment);
  projectSheet.getRange(lastRow+1, 1, roleCount,lastCol).setBackground(color);

  var rowPos = lastRow + 1;

//  projectSheet.getRange(lastRow+1, 6).setFormula('=if(D'+rowPos+'="","-",if(counta(G'+rowPos+':KV'+rowPos+')<D'+rowPos+',D'+rowPos+'-counta(G'+rowPos+':KV'+rowPos+'),"Full Allocation"))')
//  .copyTo(projectSheet.getRange(lastRow+2,6,roleCount-1,1));
//  
  projectSheet.getRange(lastRow+roleCount+1, 1).setValue("-");

//  if( color == "#efefef")
//  {
//   ss.getRangeByName("refColor").setValue("#ffffff") 
//  }
//  else ss.getRangeByName("refColor").setValue("#efefef");
//  

  /* Project Name */   variablesSheet.getRange(variablesSheetLastRow+1,1).setValue(projectName);
  /* Start Cell*/     variablesSheet.getRange(variablesSheetLastRow+1,2).setValue(projectSheet.getRange(lastRow+1, 1).getA1Notation());
  /*End Cell */        variablesSheet.getRange(variablesSheetLastRow+1,3).setValue( projectSheet.getRange(lastRow+1+roleCount, 1).getA1Notation());
  /* Number of Jobs */ variablesSheet.getRange(variablesSheetLastRow+1,4).setValue(roleCount);
  /* Date Cell */      variablesSheet.getRange(variablesSheetLastRow+1,5).setValue(projectSheet.getRange(lastRow, 7).getA1Notation());



}

function staffHeaders(){

    var ss = SpreadsheetApp.getActive();
  var utilSheet = ss.getSheetByName("Staff Utilization");

  var staffNames = ss.getRangeByName("ref_staff").getValues().filter(String);
  utilSheet.getRange(1,1,1,utilSheet.getMaxRows()).clearContent();

  for (i = 1; i< staffNames.length ; i++)
  {

    utilSheet.getRange(1, i+1).setValue(staffNames[i]);

  }



}

1 Ответ

0 голосов
/ 20 ноября 2018

Пользовательский интерфейс класса не может быть вызван из IDE скрипта приложения, но его можно вызвать из скрипта, запускаемого из пользовательского меню, диалога или щелчка по изображению с прикрепленным к нему скриптом.

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