【发布时间】:2021-12-24 08:22:30
【问题描述】:
我已经编写了一个附在我的谷歌表上的谷歌脚本。除了今天非常缓慢之外,它一直运行良好。有人知道为什么吗?
var ssID = "1cpR6AVVpk9TF4_I38IFYPPOqk-_bSROHgVVYdaXLXOI";
var formID = "14foKaEoUA_lhDmJTJExwQ5vavsGJShWm_x1kaANLhwU";
var wsData = SpreadsheetApp.openById(ssID).getSheetByName("car_number");
var form = FormApp.openById(formID);
function main(){
var labels = wsData.getRange(1,1,1,wsData.getLastColumn()).getValues()[0];
labels.forEach(function(label,i){
var options = wsData.getRange(2,i + 1,wsData.getLastRow()-1,1).getValues().map(function(o) { return o[0]}).filter(function(o){return o !== ""});
updateDropdownUsingTitle(label,options);
});
}
function updateDropdownUsingTitle(title,values) {
var items = form.getItems();
var titles = items.map(function(item){
return item.getTitle();
});
var pos = titles.indexOf(title);
if (pos !== -1) {
var item = items[pos];
var ItemID = item.getId();
updateDropdown(ItemID,values);
}
}
function updateDropdown(id,values) {
var item = form.getItemById(id);
item.asListItem().setChoiceValues(values);
}
【问题讨论】:
-
您在每一行都调用
getValues。尝试使用getDataRange().getValues()仅获得 1 次并遍历数据数组。阅读Best Practices - Use batch operations
标签: google-apps-script google-sheets