Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当第一个函数完成时,执行第二个函数_Javascript_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Javascript 当第一个函数完成时,执行第二个函数

Javascript 当第一个函数完成时,执行第二个函数,javascript,google-apps-script,google-sheets,google-forms,Javascript,Google Apps Script,Google Sheets,Google Forms,我有一个GS代码,有三个不同的功能,通过表单提交激活 第一个功能: function processForm(formObject){ if(formObject.RecId && checkID(formObject.RecId)){ updateData(getFormValues(formObject),globalVariables().spreadsheetId,getRangeByID(formObject.RecId)); }else{

我有一个GS代码,有三个不同的功能,通过表单提交激活

第一个功能:

function processForm(formObject){  
  if(formObject.RecId && checkID(formObject.RecId)){
    updateData(getFormValues(formObject),globalVariables().spreadsheetId,getRangeByID(formObject.RecId));
  }else{ 
 
    appendData(getFormValues(formObject),globalVariables().spreadsheetId,globalVariables().insertRange);
       
    
    var form = FormApp.create(formObject.nombre)
    .setAllowResponseEdits(false)
    .setCollectEmail(false)
    .setDescription(formObject.fechaprev)
    .setRequireLogin(false)
    .setShowLinkToRespondAgain(false);
  
    var newname = formObject.nombre;
    form.setDestination(FormApp.DestinationType.SPREADSHEET, globalVariables().spreadsheetId);
}
当第一个函数完成时,我需要运行另外两个函数:

function ordenarData(formUrl){
  
  var ss = SpreadsheetApp.openById(globalVariables().spreadsheetId);
  var sheetNameArray = [];
  var sheets = ss.getSheets();
   
  for (var i = 0; i < sheets.length; i++) {
    sheetNameArray.push(sheets[i].getName());
  }
  
 var ordenado = sheetNameArray.sort();
    
  for( var j = 0; j < sheets.length; j++ ) {
    ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
    ss.moveActiveSheet(j + 1);
    
  var last_element = sheetNameArray[sheetNameArray.length - 1];
  Logger.log(last_element);
  }
  
 completarData(formUrl,last_element);
  
}

function completarData(formUrl,last_element){
  var ss = SpreadsheetApp.openById(globalVariables().spreadsheetId);
  var hojaData = ss.getSheetByName("Data")
  var celdaNEv = "=COUNT(\'"+ last_element + "\'\!\A\:\A\)";
  var celdaSatisf = "=IFERROR((AVERAGE(\'"+ last_element +"\'\!\C\:\C)/10);0)"; 
  var celdaPEv = '=IFERROR(O'+ hojaData.getLastRow() +'/N' + hojaData.getLastRow() +';0)';
  var celdaPAs = '=IFERROR(N'+hojaData.getLastRow()+'/M'+hojaData.getLastRow()+';0)';
  var celdaForm = "<a href=" + formUrl + " target='_blank' class='btn btn-primary btn-xs'><i class='fas fa-file-alt'></i></a>";
  var celdaTh = '=IFERROR(ROUND(L'+hojaData.getLastRow()+'*N'+hojaData.getLastRow()+'; 0);0)';
  var celdaMhr = '=IFERROR(ROUND(T'+hojaData.getLastRow()+'/M'+hojaData.getLastRow()+'; 2);0)';
  
  var formulas = [
  [celdaNEv, celdaSatisf, celdaPEv, celdaPAs, celdaForm, celdaTh, celdaMhr]
        ];
  
  var formatos = [
  ["###", "0.00%", "0.00%", "0.00%", "", "####", "0.00"]
        ];
        
  var cell = hojaData.getRange("O"+hojaData.getLastRow()+":U"+hojaData.getLastRow()+"").setNumberFormats(formatos);
  cell.setValues(formulas);

}
如您所见,第一个函数生成一个GForm并将目标设置为现有ssheet。然后,使用ordenarData,我想对工作表进行排序,并获取最后一个选项卡的名称。我的问题是,如果将processForm链接到第二个函数,它们会同时运行,没有时间生成新选项卡,因此该函数无法正常工作

如何设置函数ordenarData仅在processForm完成时运行

如果您知道使用FormApp.create.setDestination生成的选项卡名称的任何其他方法,我也可以。

解决

SpreadsheetApp.flush适合我: