![](/img/trans.png)
[英]Applying Google Apps Script for Dynamic Data Validation to Existing Sheet
[英]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.