javascript - 谷歌工作表脚本 - 将数组复制到范围的最后一行
问题描述
由于我不是程序员,因此我正在此论坛和 yt 教程的帮助下改进我在工作中使用的电子表格。我设法从这个来源获得了一些有用的脚本,但现在我坚持使用这个:
我想从“Plan dnia”复制选中的行,并将选定行的 B、C 列中的值复制到“Harmonogram”中的最后一行,但在所需范围内 - 到 B、C 列并在 D 列中创建时间戳。脚本我创建的不是将数据粘贴到最后一行,因为在所需范围之外的其他列中有公式。这是我的示例:
https://docs.google.com/spreadsheets/d/1AguoW2RBNYzQbGN4D_NkHiK40uUgMI5eYZ9mMq5Ue3o/edit?usp=sharing
function doplanu() {
var sskey = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = sskey.getSheetByName('Plan dnia');
var sheet2 = sskey.getSheetByName('Harmonogram');
var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
var datastamp = [new Date()];
var dest = [];
for (var i = 0; i < data.length; i++ ) {
Logger.log(data[i][0]);// just to check if the condition is true sometimes ;-)
if (data[i][0] == true ) {
var destRow = []; //initialise intermediate array
destRow.push(data[i][1],data[i][2],data[i][3]);// choose here the columns you want to add (here col2, 3 & 13)
dest.push(destRow);
}
} // here is the end of the for loop
Logger.log(dest) ; // log the dest array instead
if (dest.length > 0 ) { // if something has been written in your array then batch write it to the dest. sheet
sheet2.getRange(sheet2.getLastRow()+1,2,dest.length,3).setValues(dest);
var ss = SpreadsheetApp.getActiveSheet(),
arr = [];
ss.getRange("A:A")
.getValues()
.forEach(function (value) {
var changeWith = [false],
toBeChanged = [true] //add characters to be changed here, the characters you want to change these with in the same 'place' in the above array.
.map(function (c, i) {
return value = replaceAll(value.toString(), c, changeWith[i])
})
arr.push([value])
});
ss.getRange("A:A")
.setValues(arr)
}
function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.replace(new RegExp(c, "g"), r) : v;
}
sheet2.getRange(sheet2.getLastRow(), 4 ).activate();
}
另一件事是脚本在应对后取消选中“Plan dnia”中的行的方式。我让它尽可能简单,但它的工作有点慢,如果我只搜索选中的行并将 G 列中的状态更改为“✔”并取消选中该行,我会很棒。
我希望能得到你们的帮助:)
解决方案
推荐阅读
- java - 收件人列表中的 Apache 骆驼通行证标头
- javascript - Javascript在容器中拖放文件:如何防止`dragover`被多次调用导致延迟?
- r - 如何将“left_join”与同一数据框中的多个列一起使用?
- machine-learning - 矩阵级别的注意力计算
- r - 有 50 个或更多警告(使用 warnings() 查看前 50 个)
- javascript - hashid 加密在 PHP 中不返回任何值
- python - 用 keras 构建一个密集的残差网络
- excel - 一个公式,用于知道一个工作表中的哪些数据包含在另一个工作表中
- python - 继承类在python 3.x中如何使用bass类的__new__函数?
- java - Dockerfile:如何将 .jar 放入 PATH