我在sheet2设置中的A列中包含工作订单的完整列表。在B列中,我有一个简单的标记“ TRUE”来表示工作已完成。在sheet1中,我有一个过滤器,仅显示sheet2中B列中未标记为“ TRUE”的订单。在sheet1中的订单列表旁边是复选框。我想要一个可以在选中复选框时读取的脚本,读取复选框旁边的项目,将复选框选中“ FALSE”以将其清除,然后将sheet2中B列中的相应行标记为“ TRUE”,因此项目将列表保留在sheet1上。
我将使用“编辑时触发”触发器来设置脚本,但是在创建可以执行这些功能的脚本方面需要帮助。
答案 0 :(得分:0)
经过大量搜索和自我调试之后,我想到了这个。这样看起来还好吗?我将把它放在有成千上万个条目的电子表格中。我不希望它效率低下。
function MarkComplete() {
var ss = SpreadsheetApp.getActive(); //Loading Current spreadsheet
var Display = ss.getSheetByName("Display"); //Loading Display sheet
var Complete = ss.getSheetByName("Complete"); //Loading Complete sheet
var data1 = Display.getDataRange().getValues(); //Loading data from sheet 1
var data2 = Complete.getDataRange().getValues(); //Loading data from sheet 2
for(var i = 0; i<data1.length;i++){
Logger.log('List item : ' + data1[i][0]);
Logger.log('Checked : ' + data1[i][1]);
if(data1[i][1] == true){ //Looking for rows in Display that are checked.
Logger.log('TRUE : ' + data1[i][0]);
for(var n = 0; n<data2.length;n++){
if(data2[n][0] == data1[i][0]){ //Looking for rows in Complete that match checked rows in Display
Complete.getRange(n+1,2).setValue("=true"); //set row x column 2 to true in complete
Display.getRange(i+1,2).setValue("false"); //set row i column 2 to false in display
}
}
}
}
}