Я пытаюсь запустить 2 функции за один раз, но, похоже, что-то не так

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

У меня есть 2 основные функции, которые я хочу запустить за один раз test_FolderMaker(); , и copyfile(); проблема в том, что ошибка гласит «нет папки» и test_FolderMaker(); не создает папку при первом запуске и copyfile(); не будет запускаться без папки, созданной первой основной функцией, но при втором запуске она запускается, и ошибка не выполняется.функция работает. Это то, что у меня есть на данный момент:

 function new_Patient_Record(){
    var folder_Maker = test_FolderMaker();
  if (folder_Maker = true){
    (copyfile()
    );}
}

function test_FolderMaker()
{
  var t = new Date();
  var ids = false;
  var res = createFoldersTasks_(ids);
  Logger.log(res);
  Logger.log('Time to run the script = '   (new Date() -t)   ' ms.');
}

function copyfile() {
var ss = SpreadsheetApp.getActive();
var activeSheet = ss.getSheetByName("sheet_Patients");
var activeSheetFM = ss.getSheetByName("_FolderMaker_");
var lastRow = activeSheet.getLastRow();
var data = activeSheet.getRange(lastRow,2,1,1).getValue();
var secondData = activeSheet.getRange(lastRow,3,1,1).getValue();
var folder_Name = [data  ", "  secondData];

var folders = DriveApp.getFoldersByName(folder_Name);
var dest_folder;
if (folders.hasNext()) {
  dest_folder = folders.next();
} else {
  throw new Error("No folder.")
}
  
activeSheetFM.getRange(2,4,1,1).setValue(dest_folder.getId());
var Checkup_Form = DriveApp.getFileById("106-03HR1uYZPIYX-9bOFxpcpLjo-qolnus13Dqtyr2k");
var VDH_Form = DriveApp.getFileById("1ZwSvFIzIppGVw29XPAs5o7cgnrbvS3uE8e-nz2fFrDk");
var excel_File = DriveApp.getFileById("1Xidcg8jPA9fFJeH02NlXvMhBmkIQi-9-");
  
var final_Excel_File = excel_File.makeCopy(data  ', '  secondData   ' '   Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd')   ' '   excel_File.getName());
final_Excel_File.moveTo(dest_folder);
var final_VDH_Form = VDH_Form.makeCopy(data  ', '  secondData   ' '   Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd')   ' '   VDH_Form.getName());
final_VDH_Form.moveTo(dest_folder);
var final_Checkup_Form = Checkup_Form.makeCopy(data  ', '  secondData   ' '   Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd')   ' '   Checkup_Form.getName());
final_Checkup_Form.moveTo(dest_folder);
}
  

Когда я разделяю их оба запуска, это действительно работает, поэтому я думаю, что с функцией что-то не так new_Patient_Record() . Спасибо

 function createFoldersTasks_(ids)
{
  var t = new Date();
  getSettings_();
  var d1 = CCC_.STR_DELIMEER1;
  var d2 = CCC_.STR_DELIMEER2;
  var allids = CCC_.STR_IDS_FOLDERMAKER.split(d2);
  var allFolderIds = CCC_.STR_FOLDERIDS_FOLDERMAKER.split(d2);
  var allFolderPaths = CCC_.STR_PATHS_FOLDERMAKER.split(d2);
  
  if (ids) { var taskIds = ids.split(d1); }
  else { var taskIds = allids; } 
 
  // loop tasks
  var folderMaker = {}, index;
  var delim = CCC_.STR_PATHDELIM_FOLDERMAKER;
  for (var i = 0; i < taskIds.length; i  )
  {
    index = allids.indexOf(taskIds[i]);
    folderMaker.names = allFolderPaths[index].split(delim);
    folderMaker.folderId = allFolderIds[index];
    createFolderByTask_(folderMaker);    
  }
  return 0;  
}
  

Комментарии:

1. Попробуйте поставить Utilities.sleep(500) после var folder_Maker = test_FolderMaker();

2. Кроме того, что createFoldersTasks_() делать?

3. Utilities.sleep(500) не помогает, createFoldersTasks_() — это серия функций, которые создают папки, которые я получил в Интернете. позвольте мне обновить его.

4. Часто при последовательном запуске нескольких функций рекомендуется разделять их с помощью SpreadsheetApp.flush();

5. Всякий раз, когда функции выполняют большую запись в электронную таблицу, например, setValues();