google-apps-script - 基于单元格编辑在工作表之间移动行 + 通过列查找找到的空白行不是整行
问题描述
我已经为此工作了几天,并将互联网和这些论坛颠倒过来,但在任何地方都找不到答案。在此过程中,我学习了一些脚本,但确定我需要做的事情远远超出了我的极限。任何帮助或指导都会受到好评!
我正在为我和我妻子的手工“生意”(项目)建立一个订单系统。本质上,当在 X 列中输入“完成”时,我需要将订单 1(aw 列)从“准备发货”移动到“已发送”的下一个空白行,从而对 wz 列中的公式进行折扣。所以当它检查一个空白行,它应该只检查列 aw。
这意味着一旦订单信息转移到新工作表上,我们在这些列中添加了额外的功能(我连接它以发送电子邮件道歉,如果订单迟到 - 希望不会,但最好做好准备,与我们的邮政服务:) )
我最初学习了如何在 x 列中添加值时编写“移动行” - 并了解了触发器以及如何调用工作表等。
然后,因为 x、y 和 z 列有公式,所以当我移动整行时,我要么最终删除它们 - 不酷。或者我最终(如果我只移动列 a-w)有新的(移动的)行,显示在第 900 万行,因为它认为公式不是空白行。我尝试编辑“基于列查找行”脚本,这似乎工作正常,但后来我尝试将两者放在一起,这就是它爆炸的时候。
谁能告诉我这里哪里出错了?
function lastRowForColumn(sheet, column){
// Get the last row with data for the whole sheet.
var ss = spreadSheetApp.getActiveSpreadSheet();// this gets you the
active spreadsheet in which you are working
var sheet = ss.getSheetByName('Sent');
var r = event.source.getActiveRange();
var data = sheet.getRange(1, "A", numRows).getValues();
var numRows = sheet.getLastRow();
// Iterate backwards and find first non empty cell
for(var i = data.length - 1 ; i >= 0 ; i--){
if (data[i][0] != null && data[i][0] != ""){
return i + 1;
var ss = spreadSheetApp.getActiveSpreadSheet();// this gets you the
active spreadsheet in which you are working
var sheet = ss.getSheetByName('Sent');
var r = event.source.getActiveRange();
if(s.getName() == "Ready To Send" && r.getColumn() == 25 &&
r.getValue() == "Sent") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sent");
var lastRow = lastRowForColumn();
var target = targetSheet.getRange(targetSheet, i, 1);
s.getRange(row, 1, 1, 10).moveTo(target);
s.deleteRow(row);
}
}
}
}
解决方案
尝试这个:
function onEdit(e){
var rg=e.range;
var sh=rg.getSheet();
var name=sh.getName();
var col=rg.columnStart;
if(name!='Sheet To Send'){return;}
if(col==24 && e.value=='done') {
var ss=e.source;
var sheet=ss.getSheetByName('Sent');
var row=rg.rowStart;
var srg=sh.getRange(row,1,1,23);
var data=srg.getValues();
var drg=sheet.getRange(sheet.getLastRow()+1,1,1,23);
drg.setValues(data);
sh.deleteRow(row);
}
}
推荐阅读
- apache-spark - 如何删除旧的火花流数据?
- java - 如何在 Java 线程中监听特定时间?
- javascript - html() 函数问题
- oauth - LinkedIn头像403响应
- php - 通过控制器更改数据库文件
- angular - Angular 6 ag-grid cell renderer click function
- api - Tree field in Drupal
- javascript - 如何使用 mustache.js 渲染一个普通数组?
- cookies - 使用 WKWebsiteDataStore 设置 cookie 是否为时已晚?
- php - 检查多维数组的所有值是否为空