Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google Sheets OneEdit在具有不同列的工作表之间移动行_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Google apps script Google Sheets OneEdit在具有不同列的工作表之间移动行

Google apps script Google Sheets OneEdit在具有不同列的工作表之间移动行,google-apps-script,google-sheets,triggers,Google Apps Script,Google Sheets,Triggers,我正在尝试创建一个简单的装运处理流程,并希望使用OneEdit复选框触发器在两个工作表(选项卡)之间移动行 以下是我的项目的链接: 基本概念是将由多件组成的装运输入第一张表中,然后复制到WB_日志表中。当计划将什么装载到卡车时,复选框用于将工件从WB_日志表移动到装载计划表,在该计划表中,其装载位置将在复选框右侧的一列中确定。如果一件或多件货物无法装入特定的卡车,我希望取消选中“装载计划”框,并将该行移回WB_日志表 以下是我发现几乎可以使用的onEdit函数: 函数onEdit(事件){ //

我正在尝试创建一个简单的装运处理流程,并希望使用OneEdit复选框触发器在两个工作表(选项卡)之间移动行

以下是我的项目的链接:

基本概念是将由多件组成的装运输入第一张表中,然后复制到WB_日志表中。当计划将什么装载到卡车时,复选框用于将工件从WB_日志表移动到装载计划表,在该计划表中,其装载位置将在复选框右侧的一列中确定。如果一件或多件货物无法装入特定的卡车,我希望取消选中“装载计划”框,并将该行移回WB_日志表

以下是我发现几乎可以使用的onEdit函数:

函数onEdit(事件){
//假设源数据位于名为WB_Log的工作表中
//移动到命名加载计划的目标工作表
//带有复选框的getColumn当前设置为第14列或第N列
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=event.source.getActiveSheet();
var r=event.source.getActiveRange();
如果(s.getName()==“WB_日志”&&r.getColumn()==14&&r.getValue()==true){
var row=r.getRow();
var numColumns=s.getLastColumn();
var targetSheet=ss.getSheetByName(“加载计划”);
var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);
s、 getRange(行,1,1,numColumns).moveTo(目标);
s、 删除行(row);
}否则如果(s.getName()=“加载计划”&&r.getColumn()==14&&r.getValue()==false){
var row=r.getRow();
var numColumns=s.getLastColumn();
var targetSheet=ss.getSheetByName(“WB_日志”);
var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);
s、 getRange(行,1,1,numColumns).moveTo(目标);
s、 删除行(row);
}
}
我的问题是,Load\u Plan在复选框右侧有一些列,我不想将这些列移回WB\u日志。如何调整代码,以便在复选框未选中(False)时,仅A:N列中的信息从Load\u Plan移回WB\u Log

非常感谢任何人提供的任何建议或想法。

修改要点:
  • 当我看到您的共享电子表格时,“WB_日志”表的“N”列中有复选框。并且复选框放在工作表的底部。这样,
    targetSheet.getLastRow()+1
    返回工作表按钮的下一行。我想这就是你的问题所在。
    • 我认为在您的情况下,当检索到“B4”的后一行的最后一行时,可以使用行号
  • 并且,在脚本中,“加载计划”表中的列“A”到“O”由
    var numColumns=s.getLastColumn()
    检索。但是“WB_日志”表有“A”到“N”列。我认为检索到的列需要减少1列
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 请按如下方式修改您的脚本

发件人: 致: 参考:

在您的脚本中,我可以看到
假设源数据在名为WB_Log的工作表中
移动到名为Completed的目标工作表中
。但是当我看到你的共享电子表格时,我可以看到
WB\u Log
sheet。但我看不到
已完成
。关于
当我取消选中加载计划中的复选框时,我在
加载计划
工作表中找不到该复选框。我能问一下它们的细节吗?欢迎来到。此问题目前包括一个问题中的多个问题。它应该只关注一个问题。选择一个问题后,将代码替换为[mvce],并按照中的建议简要说明您的搜索/研究工作。抱歉,忘记将注释更改为正确的工作表名称。我试图在WB_日志和Load_计划表之间移动信息。已完成的引用是从其他项目复制的。其理念是,一些货物由多件/箱组成。要计划加载,我需要选中WB_日志中的复选框,并将信息移动到加载计划中。有时并非所有的框都适合,所以我想从Load_Plan中取消选中它们,并将其移回WB_Log。感谢您的回复。我建议您修改您的问题,包括详细信息,以避免混淆其他用户。谢谢您的建议。我对问题进行了编辑,以提供项目的更多细节,并将重点放在一个问题上。这正是我想要的。非常感谢你@欢迎肖恩·克里斯蒂安。谢谢你让我知道。我很高兴你的问题解决了。如果您的问题已解决,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我@肖恩·克里斯蒂安感谢您的回复。
} else if(s.getName() == "Load_Plan" && r.getColumn() == 14 && r.getValue() == false) {

  var row = r.getRow();

  var numColumns = s.getLastColumn();

  var targetSheet = ss.getSheetByName("WB_Log");

  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

  s.getRange(row, 1, 1, numColumns).moveTo(target);

  s.deleteRow(row);
}
} else if(s.getName() == "Load_Plan" && r.getColumn() == 14 && r.getValue() == false) {
  var row = r.getRow();
  var numColumns = s.getLastColumn() - 1;  // Modified
  var targetSheet = ss.getSheetByName("WB_Log");
  var lastRow = targetSheet.getRange("B4").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();  // Added
  var target = targetSheet.getRange(lastRow + 1, 1);  // Modified
  s.getRange(row, 1, 1, numColumns).moveTo(target);
  s.deleteRow(row);
}