Невозможно вызвать функцию внутри функции - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу запустить функцию clearAll, чтобы удалить все в форме (это работает). В конце я хочу вызвать функцию dbMaker для повторного заполнения формы. (это не работает. Функция отказывается запускаться)

Если я запускаю функцию dbMaker напрямую, она работает как положено.

Пожалуйста, помогите мне. Как запустить функцию dbMaker после завершения функции clearAll?

У меня это работало и по какой-то причине оно прекратилось. Я не могу понять это.

var ssID = "something";
var formID = "something"
//SpreadsheetApp.openById(ssID).getSheetByName("db_type");
  var ss = SpreadsheetApp.openById(ssID);
  var form = FormApp.openById((formID));




function clearAll(form){
  var form = FormApp.openById((formID));
  var items=form.getItems();
  var d=0;//deleted items counter
  for (var i=0; i<items.length; i++) {
    form.deleteItem(i-d++);
      dbMaker() ;
  }

}




function dbMaker() {

  var sheets = ss.getSheets().filter(function(sheet) {return sheet.getName().match(/db_info/gi);});

  var dbSelect = form.addListItem().setTitle('DB Type').setRequired(true);



  var dbChoices = [];
  for(var i = 0; i < sheets.length; i++) {
    var dbName = sheets[i].getName();
    var dbSection = form.addPageBreakItem().setTitle(dbName).setGoToPage(FormApp.PageNavigationType.SUBMIT);

    var nativetech = getnativetech(sheets[i]);
    var nativetech_Select = form.addListItem().setTitle('Native Technology' + ' Choice').setHelpText('Select the correct DB type').setRequired(true);
    var nativetech_Choices = [];
    for(var j = 0; j < nativetech.length; j++) {
      nativetech_Choices.push(nativetech_Select.createChoice(nativetech[j]));
      Logger.log('nativetech choices', nativetech[j]);
    }


    var integratedtech = getintegratedtech(sheets[i]);
    var integratedtech_Select = form.addListItem().setTitle('Intregrated with company' + ' Choice').setHelpText('Select the correct option').setRequired(true);
    var integratedtech_Choices = [];
    for(var k = 0; k < integratedtech.length; k++) {
      integratedtech_Choices.push(integratedtech_Select.createChoice(integratedtech[k]));
      Logger.log('integratedtech choices', integratedtech[k]);
    }




    nativetech_Select.setChoices(nativetech_Choices).setRequired(true);
    integratedtech_Select.setChoices(integratedtech_Choices).setRequired(true)

    dbChoices.push(dbSelect.createChoice(dbName, dbSection));

  }
  dbSelect.setChoices(dbChoices).setRequired(true);
}

1 Ответ

2 голосов
/ 21 апреля 2020

Вызов функции работает нормально, проблема, вероятно, внутри dbMaker (). Вот что я сделал:

function clearAll(){
  for (var i=0; i<10;i++) {
      dbMaker(i) ;
  }
}
function dbMaker(o) {
  Logger.log(o);
}

Журналы:

[20-04-20 17:41:20:166 MDT] 0.0
[20-04-20 17:41:20:169 MDT] 1.0
[20-04-20 17:41:20:172 MDT] 2.0
[20-04-20 17:41:20:174 MDT] 3.0
[20-04-20 17:41:20:176 MDT] 4.0
[20-04-20 17:41:20:178 MDT] 5.0
[20-04-20 17:41:20:180 MDT] 6.0
[20-04-20 17:41:20:183 MDT] 7.0
[20-04-20 17:41:20:185 MDT] 8.0
[20-04-20 17:41:20:187 MDT] 9.0

Попробуйте выполнить один шаг через dbMaker и убедитесь, что все работает правильно.

...