简体   繁体   English

Google表格:根据单元格值将行移至其他表格,然后再次返回

[英]Google Sheets: Move Row to Other Sheet, Then Back Again, Based on Cell Value

Please please help! 请帮忙! I have been researching this for weeks without a solution. 我已经对此进行了数周的研究,没有解决方案。

We use google forms to combine data onto google sheets. 我们使用Google表单将数据合并到Google表格中。 There are 2 sheets- "INCOMPLETE" which accepts all form responses, and "COMPLETE". 有2张纸-“不完整”接受所有表单响应,“不完整”。

I was able move a row based on the condition "COMPLETE" from sheet name "INCOMPLETE" to sheet name "COMPLETE". 我能够根据条件“ COMPLETE”从工作表名称“ INCOMPLETE”移动到工作表名称“ COMPLETE”。

I need help with: (1) I can not for the life of me find a script that will reverse it if someone accidentally checked "COMPLETE", therefore, moving it back to the "INCOMPLETE" Sheet and have it sorted by Time Stamp. 我需要以下方面的帮助:(1)如果有人不小心检查了“ COMPLETE”,我将无法找到一个可以将其反转的脚本,因此,将其移回“ INCOMPLETE”表并按时间戳进行排序。

(2) If possible I would also like another column that shows a timestamp for each time an update is made to that particular row. (2)如果可能,我还希望另一列显示每次对该特定行进行更新时的时间戳。

(3) If possible, send a reminder email to the order person when a incomplete remains for more than 2 days (from the original timestamp). (3)如果可能的话,如果残缺不全超过2天(从原始时间戳记起),请向订购者发送提醒电子邮件。

This is the script that I have so far: 这是我到目前为止的脚本:

 function onChange() { // moves a row from a sheet to another when a magic value is entered in a column // adjust the following variables to fit your needs // see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion var sheetNameToWatch = "INCOMPLETE"; var sheetNameToWatch2 = "COMPLETE"; var columnNumberToWatch = 7; // column A = 1, B = 2, etc. var valueToWatch = "COMPLETE"; var valueToWatch2 = "INCOMPLETE"; var sheetNameToMoveTheRowTo = "COMPLETE"; var sheetNameToMoveTheRowTo2 = "INCOMPLETE"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getActiveCell(); if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) { var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange); sheet.deleteRow(range.getRow()); } else if (sheet.getName() === sheetNameToWatch2 && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) { var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo2); var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange); sheet.deleteRow(range.getRow()); } } 

During the testing of this I found the bugs I left as a comment above. 在测试过程中,我发现了上面作为评论留下的错误。 I also like to add a return to other sheets as quickly as possible so that the code returns on unwanted sheets as quickly as possible. 我还想尽快将返回值添加到其他工作表中,以使代码尽快返回到不需要的工作表上。

function onChange() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getActiveRange();
  Logger.log('Head: Sheet: %s Range: %s col: %s row: %s value: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow(),rg.getValue());
  if(sh.getName()=='INCOMPLETE' || sh.getName()=='COMPLETE'){

    if(sh.getName()=='INCOMPLETE' && rg.getColumn()==7 && rg.getValue()=='COMPLETE') {
      var tsh=ss.getSheetByName('COMPLETE');
      var trg=tsh.getRange(tsh.getLastRow() + 1, 1);
      sh.getRange(rg.getRow(), 1, 1, sh.getLastColumn()).copyTo(trg);
      sh.deleteRow(rg.getRow());
      Logger.log('Top: Sheet: %s Range: %s col: %s row: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow());
    } 

    if (sh.getName()=='COMPLETE' && rg.getColumn()==7 && rg.getValue()=='INCOMPLETE') {
      var tsh=ss.getSheetByName('INCOMPLETE');
      var trg=tsh.getRange(tsh.getLastRow() + 1, 1);
      sh.getRange(rg.getRow(), 1, 1, sh.getLastColumn()).copyTo(trg);
      sh.deleteRow(rg.getRow());   
      Logger.log('Bot: Sheet: %s Range: %s col: %s row: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow());
    }
  }else{
    return;//quick return for other sheets
  }  
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据单元格值将行移动到其他工作表 - Move Row to Other Sheet Based on Cell Value Google Sheets - 根据下拉值将行移动到新工作表 - Google Sheets - Move row to new sheet based on drop down value 根据条件和单元格值将行复制到 Google 表格上的另一张表格 - Copy row to another sheet on Google Sheets based on criteria and cell value 将基于单元格值的行数据复制到 Google 表格中的新工作表 - Copy row data based on cell value to new sheet in Google Sheets 根据 Google Forms 响应表中的单元格值移动行 - Move row based on cell value in Google Forms response sheet Google表格将一行移动到当前行中2个单元格条件的另一张表格 - Google Sheets move a row to another sheet on 2 cell criteria in current row 谷歌表格。 脚本。 根据单元格值删除值,然后再次重新组织 - Google Sheets. Script. Delete values based on cell value, then reorganize back again 根据单元格的 function 值将行移动到新工作表 - Google 表格 - Move row to new sheet base on cell's function value - Google Sheets Google表格:将单元格值移动到表格范围内的下一个空position - Google Sheets: Move a cell value to next empty position in Range on sheet Google Sheets - 如果其他工作表中存在值,则突出显示单元格 - Google Sheets - Highlight cell if value exists in other sheet
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM