Google apps script 如何根据复选框值将范围复制到其他工作表,然后在新工作表上删除,同时使两个复选框保持最新
我需要一些关于这个代码的帮助。我有我的资料表“代理名单”。当第J列中的复选框为True时,第K列-最后一列中的数据将复制到从第一个空行和第K列开始的工作表“行程”。此公式有效,但我需要添加一些功能,无法找到答案。我需要:Google apps script 如何根据复选框值将范围复制到其他工作表,然后在新工作表上删除,同时使两个复选框保持最新,google-apps-script,checkbox,google-sheets,Google Apps Script,Checkbox,Google Sheets,我需要一些关于这个代码的帮助。我有我的资料表“代理名单”。当第J列中的复选框为True时,第K列-最后一列中的数据将复制到从第一个空行和第K列开始的工作表“行程”。此公式有效,但我需要添加一些功能,无法找到答案。我需要: 我希望能够选中该框,将行复制到“行程”。然后在“行程表”上有一个带有数据的复选框。当我取消选中“行程”上的复选框时,我想清除数据,同时取消选中“代理列表”上相应的复选框 我还需要能够切换这两个复选框与我的鼠标。而且,如果单元格中包含公式,则无法切换。有办法解决这个问题吗 目前
- 我希望能够选中该框,将行复制到“行程”。然后在“行程表”上有一个带有数据的复选框。当我取消选中“行程”上的复选框时,我想清除数据,同时取消选中“代理列表”上相应的复选框
- 我还需要能够切换这两个复选框与我的鼠标。而且,如果单元格中包含公式,则无法切换。有办法解决这个问题吗
- 目前,我正在将数据复制到“行程”中的最后一行。但是,如果在该行的工作表上的任何其他位置存在公式或列,则会将该行视为非空。特别是,我不能在“行程”栏中设置复选框!J:J向下移动工作表,因为这样行就不是空的,数据就到了最底部。我尝试使用代码查看O列的最后一行,但随后整个公式停止工作: var target=targetSheet.getRange(targetSheet.getRange(O:O.getLastRow()+1,11)代码>
- 我考虑过使用VLOOKUP或Match或其他公式来扫描“行程表”中的一列以查找匹配项,如果没有匹配项,则复选框将变为FALSE。但同样,我不能切换复选框
好的@Sio我想我做了一个对你有用的修复 基本上,您的问题是跟踪行程中的哪一行对应于代理列表中的那一行 为了在没有实际存储在工作表中的情况下实现这种持久性,我发现了一个名为。在那里,我成对地存储了行,以便以后检索 代码 这是您已经拥有的,只需在第10列(J)添加
insertcheckbox
。还存储这对行,以便以后检索。看,我已经将其存储在文档级别
deleteRow
,并使用deleteProperty
清除我们属性中的记录
}否则如果(s.getName()=“行程”和&r.getColumn()==10和&r.getValue()==false){
//取消选中复选框并取消选中“代理列表”时,从“行程”中删除该行
var prop=PropertiesService.getDocumentProperties();
s、 删除行(row);
//查看“代理列表”中的相应行
var keys=prop.getKeys();
对于(变量i=0;i
在这里,删除该行非常简单,因为您可以从事件对象检索该行。虽然在这种情况下,我们需要迭代属性中的每一对值,因为我们将密钥存储为代理列表的行
参考文献
insertcheckbox
。还存储这对行,以便以后检索。看,我已经将其存储在文档级别
deleteRow
,并使用deleteProperty
清除我们属性中的记录
}否则如果(s.getName()=“行程”和&r.getColumn()==10和&r.getValue()==false){
//取消选中复选框并取消选中“代理列表”时,从“行程”中删除该行
var prop=PropertiesService.getDocumentProperties();
s、 删除行(row);
//查看“代理列表”中的相应行
var keys=prop.getKeys();
对于(变量i=0;i
在这里,删除该行非常简单,因为您可以从事件对象检索该行。虽然在这种情况下,我们需要迭代属性中的每一对值,因为我们将密钥存储为代理列表的行
参考文献
function onEdit(event) {
// assumes source data in sheet named "Agency List"
// target sheet of move to named "Itinerary"
// getColumn with check-boxes is currently set to colu 3 or C
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "Agency List" && r.getColumn() == 3 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Itinerary");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 11);
s.getRange(row, 4, 1, numColumns).copyTo(target, { contentsOnly: true });
} else if (s.getName() == "Itinerary" && r.getColumn() == 9 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
s.deleteRow(row);
}
}
function onEdit(event) {
// assumes source data in sheet named "Agency List"
// target sheet of move to named "Itinerary"
// getColumn with check-boxes is currently set to colu 3 or C
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var row = r.getRow();
var numColumns = s.getLastColumn();
Logger.log(r.getValue());
if (s.getName() == "Agency List" && r.getColumn() == 3 && r.getValue() == true) {
// Create the record in "Itnerary"
var prop = PropertiesService.getDocumentProperties();
var targetSheet = ss.getSheetByName("Itinerary");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 11);
s.getRange(row, 4, 1, numColumns).copyTo(target, { contentsOnly: true });
// Insert checkbox cell (already checked)
targetSheet.getRange(target.getRow(), 10).insertCheckboxes().check();
prop.setProperty(row, target.getRow());
} else if (s.getName() == "Agency List" && r.getColumn() == 3 && r.getValue() == "") {
// Remove the row from "Itinerary" when the checkbox in "Agency List" is unchecked
var prop = PropertiesService.getDocumentProperties();
var targetRow = prop.getProperty(row);
ss.getSheetByName("Itinerary").deleteRow(targetRow);
Logger.log("Deleted the " + targetRow + "row from " + s.getName());
prop.deleteProperty(row);
} else if (s.getName() == "Itinerary" && r.getColumn() == 10 && r.getValue() == false) {
// Remove the row from "Itinerary"when the checkbox is unchecked and unchecks in "Agency List"
var prop = PropertiesService.getDocumentProperties();
s.deleteRow(row);
// Look the corresponding row in "Agency List"
var keys = prop.getKeys();
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (prop.getProperty(key) == row) {
ss.getSheetByName("Agency List").getRange(key, 3).setValue(false);
prop.deleteProperty(key)
break;
}
}
}
}
if (s.getName() == "Agency List" && r.getColumn() == 3 && r.getValue() == true) {
// Create the record in "Itnerary"
var prop = PropertiesService.getDocumentProperties();
var targetSheet = ss.getSheetByName("Itinerary");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 11);
s.getRange(row, 4, 1, numColumns).copyTo(target, { contentsOnly: true });
// Insert checkbox cell (already checked)
targetSheet.getRange(target.getRow(), 10).insertCheckboxes().check();
prop.setProperty(row, target.getRow());
}
} else if (s.getName() == "Agency List" && r.getColumn() == 3 && r.getValue() == "") {
// Remove the row from "Itinerary" when the checkbox in "Agency List" is unchecked
var prop = PropertiesService.getDocumentProperties();
var targetRow = prop.getProperty(row);
ss.getSheetByName("Itinerary").deleteRow(targetRow);
Logger.log("Deleted the " + targetRow + "row from " + s.getName());
prop.deleteProperty(row);
}
} else if (s.getName() == "Itinerary" && r.getColumn() == 10 && r.getValue() == false) {
// Remove the row from "Itinerary"when the checkbox is unchecked and unchecks in "Agency List"
var prop = PropertiesService.getDocumentProperties();
s.deleteRow(row);
// Look the corresponding row in "Agency List"
var keys = prop.getKeys();
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (prop.getProperty(key) == row) {
ss.getSheetByName("Agency List").getRange(key, 3).setValue(false);
prop.deleteProperty(key)
break;
}
}
}