【问题标题】:Google spreadsheets script onEditGoogle 电子表格脚本 onEdit
【发布时间】:2016-05-07 02:59:04
【问题描述】:

我有一个非常简单的问题。

我发现这个脚本运行良好,但我不懂编程。 此脚本在名为 Needed 的工作表内的特定列中搜索任何 date 值,当它检测到它时,它将该行移动到另一个名为 Acquired。我只需要对其他源表做同样的事情。 例如:我有 4 张名为 Needed1、Needed2、Needed3 和 Needed4 的工作表。他们都必须将输入日期的行移动到同一个 Acquired 表中。我希望有人能帮助我。

function onEdit() {
  // moves a row from a sheet to another sheet when a date is entered in a column
  // adjust the following variables to fit your needs
  // version 1.0, written by --Hyde, 24 September 2014
  // see https://productforums.google.com/d/topic/docs/wtzlc_ludTw/discussion

  var sheetToWatch = "Needed";
  var columnNumberToWatch = /* column G */ 4; // column A = 1, B = 2, etc.
  var sheetToMoveTheRowTo = "Acquired";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getActiveCell();

  if ( sheet.getName() == sheetToWatch && cell.getColumn() == columnNumberToWatch && cell.getValue() instanceof Date) {
    var targetSheet = ss.getSheetByName(sheetToMoveTheRowTo);
    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
    sheet.deleteRow(cell.getRow());
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets triggers


    【解决方案1】:

    简答:

    function onEdit() {
    
      var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4"];
    
      for (var i = 0; i < sheetsToWatch.length; i++) {
        var sheetToWatch = sheetsToWatch[i]; 
    
        // all good code goes here
    
      }     
    }
    

    整个代码是:

    function onEdit() {
      // moves a row from a sheet to another sheet when a date is entered in a column
      // adjust the following variables to fit your needs
      // version 1.0, written by --Hyde, 24 September 2014
      // see https://productforums.google.com/d/topic/docs/wtzlc_ludTw/discussion
    
      var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4"];
    
      for (var i = 0; i < sheetsToWatch.length; i++) {
        var sheetToWatch = sheetsToWatch[i];
        var columnNumberToWatch = /* column G */ 4; // column A = 1, B = 2, etc.
        var sheetToMoveTheRowTo = "Acquired";
    
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = SpreadsheetApp.getActiveSheet();
        var cell = sheet.getActiveCell();
    
        if ( sheet.getName() == sheetToWatch && cell.getColumn() == columnNumberToWatch && cell.getValue() instanceof Date) {
          var targetSheet = ss.getSheetByName(sheetToMoveTheRowTo);
          var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
          sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
          sheet.deleteRow(cell.getRow());
        }
    
      }
    
    }
    

    您可以将新的工作表名称添加到数组中:

    var sheetsToWatch = ["Needed1", "Needed2", "Needed3", "Needed4", "New Name"];
    

    【讨论】:

    • 非常感谢麦克斯!!我有最后一个问题:如何将输入的日期替换为我想要的任何内容?例如数字或简单的文本?这可能以一种简单的方式吗?谢谢!
    • 这部分代码`&& cell.getValue() instanceof Date`检查输入的值是否为日期。如果你删除它,任何类型的条目都会被替换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多