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

Я совершенно новичок в этом вопросе и никогда не задавал вопрос раньше. Вот ситуация: я хочу снова и снова копировать одну и ту же форму в одну и ту же электронную таблицу («memoS»). (оригинальная форма 'formFileSample').

Я пытаюсь получить доступ к листу, связанному с этой новой добавленной формой. (форма добавлена ​​с использованием .setDestination ()

К сожалению, этот лист отсутствует в массиве, возвращаемом '.getSheets'!

Даже если он появляется в электронной таблице memoSs (проверяется, открывая его )

Надеюсь, это понятно из приведенного ниже сценария. Есть ли шанс, что у кого-то есть такой способ?

function updateOfMemoSs() {
  var memoId = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
  var Interface = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Interface');
  var memoSs = SpreadsheetApp.openById(memoId);
  var formFileSample = DriveApp.getFileById(memoSs.getSheetByName('Sample (Source)').getFormUrl().match(/[-\w]{25,}/));

  var sheetsToCopy = setInstrList();  //sets a list of names for the sheets to be created
                                      //looks like [['xxx'],['xx'],['x']]
  for(var i in sheetsToCopy){
    var newFormId = formFileSample.makeCopy('memo '+sheetsToCopy[i][0]).getId();
    var newForm = FormApp.openById(newFormId).setDestination(FormApp.DestinationType.SPREADSHEET, memoId);

//    var memoSs = SpreadsheetApp.openById(memoId); //didnt work

    var sheets = memoSs.getSheets().filter(sheet => sheet.getFormUrl()); //sets a list of linked sheets
    Logger.log('formIds = ');
    for(var j in sheets){
      Logger.log(sheets[j].getName());
      Logger.log(sheets[j].getFormUrl().match(/[-\w]{25,}/));
   }//returns a list that does not include the linked sheet created earlier.(even though it appears in spreadsheet)
/*  for(var j in sheets){
      var sheet = sheets[j];
      if(sheet.getFormUrl().match(/[-\w]{25,}/) == newFormId){
        var newSheet = sheet;         //therefore I never find a match for newFormId
      }
    }*/
  }
//   Logger.log('newSheet = ');
//    Logger.log(newSheet.getName());
}

1 Ответ

0 голосов
/ 04 мая 2020

Спасибо Куперу за рассмотрение вопроса. Похоже, я недостаточно терпелив в своих исследованиях, так как ответ уже был опубликован в StackOverFlow: ' getSheets () Многократные вызовы Google Apps Script выдают ' Как-то после создания листа. перед вызовом getSheets (): SpreadsheetApp.flush()

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