javascript - 切片列并以唯一顺序粘贴?
问题描述
我有一个按预期执行的脚本,但是当前的切片方法正在粘贴不正确的范围。
目前,该脚本复制第 1-12 列(A:L)并粘贴第 1-5 列(A:E),跳过第 6(F)列,并按原样粘贴第 7-12 列(G:L)。
我想让脚本粘贴第 1-5 列(A:E),跳过第 6(F)列,粘贴第 7(G)列,跳过第 8(H)列,并用第 9 列中的数据粘贴第 9(I)列(I) 如果“缺席”或“迟到”则来自第 11 列的数据。
function Copy() {
var sss = SpreadsheetApp.openById("sheet id");
var ss = sss.getSheetByName("Sheet 1");
var lastrow = ss.getLastRow();
var data = ss.getRange(lastrow, 1, 1, 12).getValues();
var tss = SpreadsheetApp.openById("sheet id");
var ts = tss.getSheetByName("Sheet 2"); tab name
var tslastrow = ts.getLastRow();
ts.getRange(tslastrow + 1, 1, 1, 5).setValues([data[0].slice(0,5)]);
ts.getRange(tslastrow + 1, 7, 1, 6).setValues([data[0].slice(6)])
}
解决方案
我理解你想要做什么如下。
- 来源:从一行中检索 A、B、C、D、E、F、G、H、I、J、K 和 L。
- 目的地:将 A、B、C、D、E、G 和 (I) 排成一排。
- 关于“我”,当“K”为“迟到”或“我”为“缺勤”时,加“我”。
如果我的理解是正确的,那么这个修改呢?我认为您的情况有几个答案。因此,请将此视为其中之一。
修改后的脚本:
元素被 检索后slice()
,使用 . 连接元素concat()
。此时,它使用“I”列的条件。
function Copy() {
var sss = SpreadsheetApp.openById("sheet id");
var ss = sss.getSheetByName("Sheet 1");
var lastrow = ss.getLastRow();
var data = ss.getRange(lastrow, 1, 1, 12).getValues();
var tss = SpreadsheetApp.openById("sheet id");
var ts = tss.getSheetByName("Sheet 2");
var tslastrow = ts.getLastRow();
// Below script was modified.
var r = data[0].slice(0,5).concat(data[0].slice(6,7));
if (data[0][8] == "Absence" || data[0][10] == "late Arrival") {
r = r.concat(data[0][8]);
}
ts.getRange(tslastrow + 1, 1, 1, r.length).setValues([r]);
}
参考 :
如果我误解了你想要什么,请告诉我。我想修改它。
推荐阅读
- iframe - 如何修复“正在访问的框架已被沙盒化并且缺少“允许同源”标志
- ssl - Python ssl客户端无法使用ssl连接到socketserver
- r - 制作列值的列
- wordpress - 如何隐藏 WordPress 帖子中的标签?
- c# - .NET Standard 库输出不包括 nuget 依赖项
- java - 从 Intent 返回的 Uri 创建 Mat 对象
- javascript - 是否可以在 c3 图表上动态更改工具提示?
- linux - 如何强制所有centos终端dns查询到squid代理?
- python - PycURL 通过特定接口发送 DNS 流量
- c# - MVC Anti-forgery Token 在通过 AJAX 发布时不允许上传多个文件