google-apps-script - 如何将 FOR LOOP 添加到此 Google 脚本代码中?
问题描述
此脚本将 SHEET1 中的数据块复制并粘贴到 SHEET2 中的最后一行 + 1。
我想添加一个循环,以便对于 SHEET 1 中的每一行数据,我可以在 SHEET2 中指定目标行,而不是块粘贴到最后一行 + 1。
例如,我在范围 A1:E6 的 SHEET1 中有 5 行数据。
- 第 1 列:名称
- 第 2 列:案例#
- 第 3 栏:说明
- 第 4 栏:日期
- 第五栏:价值
- Col 6:Sheet2 中的目标行
因此,如果目标行指定为 50,则该行将覆盖 Sheet2 中第 50 行的数据。
下一行数据指定目标第 73 行,以便将数据行存放在 Sheet2 中的第 73 行,依此类推...
function dataTransfer1() {
var ss = SpreadsheetApp.getActive(); //source sheet/this sheet
var tss = SpreadsheetApp.openById("oweoeIE8373JDJudjd8383Iwejfi83"); //destination sheet ID
var sh = ss.getSheetByName("ADD MISS 7") //name of subsheet w/in source sheet
var tsh = tss.getSheetByName("JR") //name of subsheet w/in destination sheet
var rowDestination = tsh.getLastRow()+1;
var numRows = ss.getRange("A1").getValues();
var copyRange = sh.getRange(2,14,numRows,5).getValues(); //source range
var dumpRange = tsh.getRange(rowDestination,1,numRows,5); //destination range
dumpRange.setValues(copyRange);
}
解决方案
function dataTransfer1() {
var ss = SpreadsheetApp.getActive(); //source sheet/this sheet
var tss = SpreadsheetApp.openById("oweoeIE8373JDJudjd8383Iwejfi83"); //destination sheet ID
var sh = ss.getSheetByName("ADD MISS 7") //name of subsheet w/in source sheet
var tsh = tss.getSheetByName("JR") //name of subsheet w/in destination sheet
var values = sh.getDataRange().getValues();
var trange = tsh.getRange(1, 14, tsh.getLastRow(), 5);
var tvalues = trange.getValues();
for (const value of values) {
const i = value[5] - 1;
tvalues[i] = value.slice(0, -1);
}
trange.setValues(tvalues);
}
推荐阅读
- laravel - 在 Laravel 的多个数据库连接中重置密码
- postgresql - FORCE_NOT_NULL" LINE 1: ...r_name ) FROM STDIN CSV QUOTE '"' ESCAPE '''' FORCE_NOT_
- azure-devops - 禁用 AzureFileCopy@2 预作业?
- javascript - 如何在css中重新启动组动画?
- javascript - 加载 JSON API 数据的特定部分
- excel - VBA 扩展范围
- hibernate - 使用 Spring Boot 2.1+ 为 Hibernate 配置缓存
- javascript - Typescript - 如何在不使用 Exclude<> 的情况下从泛型类型中排除类型?
- ssl - 鱿鱼和其他 SSL_ports
- node.js - 安装 Node.js 后,'npm' 未被识别为内部或外部命令、可运行程序或批处理文件 - Windows