簡體   English   中英

如何將所有數據從源工作表復制到目標工作表?

[英]How to copy all data from source sheet to destination sheet?

我制作了一個 Google 表格,用於跟蹤制造環境中的批號。 現在,當啟用 onEdit 觸發器時,源工作表中的數據只會使目標工作表中的第一行數據翻倍。 這是Sheet的鏈接。 這是我到目前為止的代碼:

    function onEdit(e) {
      if (e.range.getA1Notation() == 'N2') {
        if (/^\w+$/.test(e.value)) {        
          eval(e.value)();
          e.range.clear();
        }
      }
    }
    function Reset() {
      var s = SpreadsheetApp.getActiveSheet();
      if( s.getName() == "Input" ) {
      var dataRange = s.getRange('A5:V14');
    var values = dataRange.clearContent();
    s.getRange("C5:C14").setValue('-');
    s.getRange("F5:F14").setValue('-');
    s.getRange("I5:I14").setValue('-');
    s.getRange("L5:L14").setValue('-');
      }
    }
    function Submit() {
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getSheetByName('Input');
      const targetSheet = ss.getSheetByName('Database');
      const data = sh.getRange(5,1,1,23).getValues(); // A5:W14
      targetSheet.getRange(targetSheet.getLastRow()+1,3,data.length,data[0].length).setValues(data);
    }

如果我正確理解您的問題,您擔心當您提交 select 時,會在數據庫表中雙重插入數據。 可以假設這是由於 Submit function 運行了兩次。 第一次檢查 /^\w+$/.test(e.value) 時,第二次直接運行 eval(e.value)() 時。 我不確定這是錯誤還是功能:-)

試試這個代碼,它可以工作:

function onEdit(e) {
  if (e.range.getA1Notation() == 'N2') {
    var val = e.value;
    switch(val) {
      case 'Reset': Reset();
        break;
      case 'Submit': Submit();
        break;
    }
    e.range.clear();
  }
}

更新。

雙重插入是由於您使用了 2 個 onEdit() 觸發器。 查看當前項目的 Edith / Triggers。 刪除它。 在此處輸入圖像描述

更新2。

如果您只想在數據庫表上顯示 10 行中的填充行,請使用此代碼。 它根據 H 列中是否有某些文本(例如成人或兒科)過濾行。

function Submit() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Input');
  var targetSheet = ss.getSheetByName('Database');
  var data = sh.getRange(5,1,10,23).getValues();
  Logger.log(data);
  var fData = data.filter(data => (data[13] != ""));
  Logger.log(fData);
  targetSheet.getRange(targetSheet.getLastRow()+1,3,fData.length,fData[0].length).setValues(fData);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM