javascript - 是否可以在 Google Apps 表格脚本的 copyTo 命令中使用变量?

标签 javascript google-apps-script google-sheets

我有一个电子表格,可以根据 Google 表单中的信息生成测试计划。我想做的是编写一个脚本来检查 B 列,如果 B[行号] 中有内容,则将单元格 I3 复制到 I[行号] 中。

这是我正在处理的内容:

var testplan = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TestPlan");

for (var j = 0; j < 200; j++) {  

var destination = testplan.getRange(3, 9);
var contentCheck = testplan.getRange("B2:B200").getValues();

if (contentCheck != '' && contentCheck != 0) {
  destination.copyTo(testplan.getRange(j, 9));
};

现在,如果我从非 j 的任何内容(例如 4)设置 copyTo,它就会很好地复制到 I4。否则,我会收到错误“范围的坐标或尺寸无效。”

有没有办法在这里使用我没有看到的变量?还是我还有其他问题?

最佳答案

几个问题:

  • 您计划将 I3 复制到 I[row],但您的 contentCheckB2 开始>,重叠。重叠是导致错误的原因,“范围的坐标或尺寸无效。”
  • 您已将源单元格 I3 称为“目标”,这令人困惑。我们将其称为。另外,您知道单元格坐标,那么为什么不使用它们呢?
  • 您已在循环内声明了该值...但它永远不会更改,因此只需在循环之前执行一次即可。
  • 类似地,contentCheck 可以在循环之前加载一次。它产生一个二维数组(在本例中是一个行数组,每行都有一个列)。您需要使用行索引和列索引将其作为数组进行寻址,否则首先会展平整个数组以创建一个字符串值以与 '' 进行比较,然后解析一个整数以与“0”进行比较' 这里:

    if (contentCheck != '' && contentCheck != 0) {
    

    这是一件好事,一旦我们索引到单个值,ala contentCheck[j][0]...该比较可以简化为 truthiness 的测试:

    if (contentCheck[j][0]) {
    

    数组将从 0 开始,而电子表格的行索引和列索引从 1 开始。您需要对此进行调整,特别是因为您的范围从 B2 开始,跳过一行。 (为了避免前面提到的重叠,假设它应该从 B4 开始 - 您需要整理实际值。)

你最终应该得到这样的结果:

var testplan = SpreadsheetApp.getActiveSpreadsheet()
                             .getSheetByName("TestPlan");

var source = testplan.getRange("I3");
var contentCheck = testplan.getRange("B4:B200").getValues();

for (var j = 0; j < contentCheck.length; j++) {  

  if (contentCheck[j][0])) {
    // 0-based j plus 1 to be 1-based, plus starting row
    source.copyTo(testplan.getRange(j+1+4, 9));
  };
}

关于javascript - 是否可以在 Google Apps 表格脚本的 copyTo 命令中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202015/

相关文章:

regex - 从电子表格中单元格的值解析字符串和对象

javascript - 将项目添加到逗号分隔列表的自定义 Google 表格功能

Azure 逻辑应用获取行操作将仅方括号值不同的相同列标题转换为数字

Javascript 检查在可接受的范围内

JavaScript/jQuery : Replace items in string matching {x} with "jQuery(' #resultsx'). val()"

javascript - Rx - 根据内容拆分 Observable(分组依据直到更改)

google-sheets - 转换电子表格十进制数字格式 : period- and comma-separated decimal positions

javascript - jQuery .load() 不加载插件

javascript - "401 Error Code"使用谷歌脚本应用获取帖子

jquery - 如何使用 htmlService 定位 jQuery 对话框