В Google script вновь добавленные формы ответ лист не отображается

В js, я открываю лист google, выполняя некоторые функции к нему. Затем я открываю форму google и устанавливаю назначение ответа на этот лист. Это автоматически добавляет новый лист. Однако в сценарии новый рабочий лист не отображается.

Вот соответствующий код:

var userCBsheet = SpreadsheetApp.open(userCBfile);
Logger.log("Sheet Count 1: " +userCBsheet.getNumSheets());
//this shows 8 sheets correctly

var formLL = FormApp.openById(userLLfile.getId());
formLL.setDestination(FormApp.DestinationType.SPREADSHEET,userCBsheet.getId());

Logger.log("Sheet Count 2: " +userCBsheet.getNumSheets());
//Still shows 8

Затем я попробовал несколько вариантов, таких как добавление сна или повторное открытие файла с новой переменной.

//same as above, then added
var cbid=userCBsheet.getId(); 
var userCBsheet2 = SpreadsheetApp.openById(cbid);
Logger.log("Sheet Count 3: " +userCBsheet2.getNumSheets());
//still shows 8

Если я позволю функции завершить, то запустите простую проверку, она работает:

function junk() {
  var files = DriveApp.getFilesByName(theName);
  var file = files.next();
  var ss = SpreadsheetApp.openById(file.getId())
  Logger.log("Sheet Count 4: " +ss.getNumSheets());
  //this returns 9 (as it should).
}

Таким образом, вопрос в том, как я могу получить доступ к новой вкладке после того, как она была добавлена на лист с помощью функции setDestination формы?

1 ответ

  1. Добавить SpreadsheetApp.flush() после изменения назначения формы следующим образом:

    var formLL = FormApp.openById(userLLfile.getId());
       formLL.setDestination(FormApp.DestinationType.SPREADSHEET,userCBsheet.getId());
    SpreadsheetApp.flush()
    Logger.log("Sheet Count 2: " +userCBsheet.getNumSheets());