繁体   English   中英

在 Apps 脚本中从工作表导入工作表时在列中添加选项卡名称

[英]Adding tab name in column while importing from Sheet to Sheet in Apps Script

我已经为此苦苦挣扎了一段时间并推迟了它,因为我总是能够编辑 SOURCE 电子表格并使用 TABNAME 添加一个 IF 语句。

意思是,在相邻的列中,我会写,如果 Cell = 空白,什么也不做,如果不给我标签名称..那么我会简单地将该列包含在我的导入中。

在将真正的问题推迟一段时间后,我无法在这种情况下编辑源表——导致我陷入试图更改此脚本的兔子洞中。

这是我所拥有的:

  • 将工作表导入工作表的脚本(更喜欢这个而不是 importrange):

     function scheduleimport() { //@NotOnlyCurrentDoc var values = SpreadsheetApp.openById('spreadsheetID'). getSheetByName('SourceSheet').getRange('A1:N').getValues(); SpreadsheetApp.getActive().getSheetByName('DestinationSheet'). getRange(1,1,values.length,values[0].length).setValues(values);}

这效果非常好,我已经靠它生活了一段时间......

我想要完成的是将源工作表的 TABNAME 放在导入范围旁边的列中(仅在范围具有值的单元格中 - 而不是整个目标工作表)。

我遇到了这个脚本,它使用特定列的长度并在指定的任何地方放置一个值。 我对其进行了调整以包含 TABNAME:

function fillColB() {
var s = SpreadsheetApp.getActiveSheet();
tabname = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
var data = s.getRange("a1:a").getValues();
var data_len = data.length;
for(var i=0; i<data_len; i++) {
  if(data[i][0].length == 0) {
    s.getRange(i+1,2).setValue("");
  } else {
    s.getRange(i+1,2).setValue(tabname);
  }
}
}

我尝试将它们捆绑在一起 - 本质上是获取导入的长度,并将 TABNAME 作为最后一列旁边的值添加。 不过,我正在为此苦苦挣扎——任何指导都将不胜感激。

这个怎么样:

function scheduleimport() {
  const ss = SpreadsheetApp.openById('spreadsheetID');
  const sh1 = ss.getSheetByName("SourceSheet");
  const vs = sh1.getRange('A1:N' + sh1.getLastRow()).getValues();
  const sh2 = ss.getSheetByName('DestinationSheet');
  sh2.getRange(1, 1, vs.length, vs[0].length).setValues(vs);
  sh2.getRange(1,sh2.getLastColumn() +1).setValue(sh1.getName());
}

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM