簡體   English   中英

Google Sheet Apps 腳本超出最長時間

[英]Google Sheet Apps Script Exceeding maximum time

我有一個僅在 1 個單元格上運行的動態下拉應用程序腳本,並且我的工作表中還運行了一些其他公式。 直到 2 天前我可以在編輯上運行腳本,但我現在似乎不能這樣做。 在應用程序腳本執行頁面中檢查時,它顯示“超出最大執行時間”。 我能做些什么來解決這個問題?


var mainWsName = "Print Sheet";
var mainDataName = "Orders";
var FirstLevelColumn = 1;
var SecondLevelColumn = 2;
var ThirdLevelColumn = 3;
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName);
var wsJO = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainDataName);
var JO = wsJO.getRange(2,1,wsJO.getLastRow()-1,2).getValues();


function onEdit(e){
  var activeCell = e.range;
  var val = activeCell.getValue();
  var r = activeCell.getRow();
  var c = activeCell.getColumn();
  var wsName = activeCell.getSheet().getName();
  if(wsName === mainWsName && c === FirstLevelColumn && r > 1){
     applyFirstLevelValidation(val,r); 
  }else if(wsName === mainWsName && c=== SecondLevelColumn && r > 1){
    applysecondLevelValidation(val,r);
  }
} //end onEdit

function applyFirstLevelValidation(val,r){ 

   if(val === ""){
    ws.getRange(r,SecondLevelColumn).clearContent();
    ws.getRange(r,SecondLevelColumn).clearDataValidations();
    } else {
      ws.getRange(r,SecondLevelColumn).clearContent();
      var filteredJO = JO.filter(function(o){return o[0] === val });
      var listToApply = filteredJO.map(function(o){return o[1]});
      var cell = ws.getRange(r,SecondLevelColumn);
      applyValidationToCell(listToApply,cell);
    }
}


function applyValidationToCell(list,cell){
  
             
  var rule=SpreadsheetApp.newDataValidation().requireValueInList(list).setAllowInvalid(false).build();        
  
   cell.setDataValidation(rule);

}

嘗試執行應用程序腳本以根據我的選擇獲取動態下拉列表。

您引用的代碼不是最理想的,但您提到的性能不佳很可能是由電子表格而不是腳本引起的。 要提高電子表格性能,請參閱這些優化技巧

您可能還想查看dependentDropDownLists_腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM