Google apps script 基于单元格值复制行部分的图纸脚本

Google apps script 基于单元格值复制行部分的图纸脚本,google-apps-script,google-sheets,spreadsheet,google-sheets-api,google-sheets-formula,Google Apps Script,Google Sheets,Spreadsheet,Google Sheets Api,Google Sheets Formula,所以。这应该很简单,我可以用(=QUERY(MAIN!A:H,“select A,C,F where H='OPEN'))做我需要的事情,但我不能排序或编辑。因此我正在尝试制作一个脚本,从“MAIN”选项卡复制到“OPEN”选项卡当H列更改为打开时,选项卡仅显示A列、C列或F列。我需要将其置于触发器上,以便信息保留在打开的选项卡上,并且我可以对其进行编辑和排序。问题是,我不擅长脚本,我不知道如何仅显示A列、C列和F列。到目前为止,我已经完成了 }编辑: 如果不希望在编辑MAIN中的状态列时自动

所以。这应该很简单,我可以用(=QUERY(MAIN!A:H,“select A,C,F where H='OPEN'))做我需要的事情,但我不能排序或编辑。因此我正在尝试制作一个脚本,从“MAIN”选项卡复制到“OPEN”选项卡当H列更改为打开时,选项卡仅显示A列、C列或F列。我需要将其置于触发器上,以便信息保留在打开的选项卡上,并且我可以对其进行编辑和排序。问题是,我不擅长脚本,我不知道如何仅显示A列、C列和F列。到目前为止,我已经完成了

}

编辑: 如果不希望在编辑MAIN中的状态列时自动运行脚本,请改用此功能:

function CopyDataToNewFile() {
  var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAIN');
  var values = sourceSheet.getDataRange().getValues();
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OPEN');
  targetSheet.clear();
  for(var i = 1; i < values.length; i++) {
    if(values[i][7] == 'OPEN') {
      var dataA = values[i][0];
      var dataC = values[i][2];
      var dataF = values[i][5];
      targetSheet.appendRow([dataA, dataC, dataF]);    
    }
  }
}
函数CopyDataToNewFile(){
var sourceSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAIN');
var values=sourceSheet.getDataRange().getValues();
var targetSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OPEN');
targetSheet.clear();
对于(变量i=1;i
=========================================

如果希望每次编辑H列时都运行脚本,请使用下面的命令。如果编辑的单元格来自MAIN中的H列,则脚本不会执行任何操作,因此无需担心打开时的编辑会更改MAIN中的数据

将所有数据复制到“打开”选项卡的前3列。此外,在复制之前,将删除“打开”选项卡中以前的所有数据:

function onEdit(e) {
  var sourceSheet = e.source.getActiveSheet();
  var sheet_name = sourceSheet.getName();
  var column = e.range.getColumn();
  if(sheet_name == 'MAIN' && column == 8) {
    var values = sourceSheet.getDataRange().getValues();
    CopyDataToNewFile(values);
  }
}

function CopyDataToNewFile(values) {
  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OPEN');
  targetSheet.clear(); // This clears previous data in OPEN tab, delete this line if you don't want this to happen.
  // Looping through each row in MAIN tab
  for(var i = 1; i < values.length; i++) {
    // Checking if column H value is 'OPEN'
    if(values[i][7] == 'OPEN') {
      // Getting values from A, C, F columns
      var dataA = values[i][0];
      var dataC = values[i][2];
      var dataF = values[i][5];
      targetSheet.appendRow([dataA, dataC, dataF]);    
    }
  }
}
函数onEdit(e){
var sourceSheet=e.source.getActiveSheet();
var sheet_name=sourceSheet.getName();
var column=e.range.getColumn();
如果(工作表名称='MAIN'&&column==8){
var values=sourceSheet.getDataRange().getValues();
CopyDataToNewFile(值);
}
}
函数CopyDataToNewFile(值){
var targetSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OPEN');
targetSheet.clear();//这将清除“打开”选项卡中以前的数据,如果不希望发生这种情况,请删除此行。
//循环浏览主选项卡中的每一行
对于(变量i=1;i

我希望这就是您想要做的,如果我误解了您的目的,我很抱歉。

您介意共享该工作表的编辑版本吗?尝试理解该工作表的数据架构(即,如果它只有一行或多行,将添加到那里等等)。脚本是否绑定到电子表格?我收到一个第15行错误(例如)(变量i=1;ifunction onEdit(e) { var sourceSheet = e.source.getActiveSheet(); var sheet_name = sourceSheet.getName(); var column = e.range.getColumn(); if(sheet_name == 'MAIN' && column == 8) { var values = sourceSheet.getDataRange().getValues(); CopyDataToNewFile(values); } } function CopyDataToNewFile(values) { var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OPEN'); targetSheet.clear(); // This clears previous data in OPEN tab, delete this line if you don't want this to happen. // Looping through each row in MAIN tab for(var i = 1; i < values.length; i++) { // Checking if column H value is 'OPEN' if(values[i][7] == 'OPEN') { // Getting values from A, C, F columns var dataA = values[i][0]; var dataC = values[i][2]; var dataF = values[i][5]; targetSheet.appendRow([dataA, dataC, dataF]); } } }