我只是没有得到这个。我只想将值从一个单元格复制到同一行中的另一个单元格。简单吧?好吧,它使用值而不是仅仅一个单元格填充每个单元格(向右)。我已经把我的大脑绞在脑后,我想我只是不理解某些东西。
/* This gets the entire sheet (range) doesn't it? */
var range = SpreadsheetApp.getActiveSheet().getDataRange();
var rowRange ;
var status ;
var notes ;
var i=981;
var theEnd=979;
for (; i > theEnd; i--) {
rowRange = range.offset(i, 0, 1); // Doesn't this specify one row (range) ?
status = rowRange.offset(0, statusColumnOffset).getValue(); // one cell, right?
notes = rowRange.offset(0, notesColumnOffset).getValue();
/* it gets the correct value for notes */
if (notes == "No Number") {
// copy notes cell to status cell
/* I've tried both this (first attempt): */
//rowRange.offset(0, statusColumnOffset).setValue("No Number");
/* and this (second attempt): */
statusCell = rowRange.offset(0, statusColumnOffset);
statusCell.setValue("No Number");
/* both give the same results */
}
现在我很困惑为什么我第一次尝试“rowRange.offset(0,statusColumnOffset).setValue(”No Number“);”做了它做了什么。它获得一个单元格的值就好了。那么为什么在世界上相同的代码(除了设置而不是获取)导致整行被设置为每个单元格中的值?我对第二次尝试给出相同(错误)结果的原因感到困惑。什么是我不理解?
谢谢
答案 0 :(得分:2)
rowRange = range.offset(i, 0, 1); // Doesn't this specify one row (range) ?
是的,它的范围与工作表中填充列的数量一样宽。所以这个:
statusCell = rowRange.offset(0, statusColumnOffset);
将同样广泛。我相信你需要使用:
statusCell = rowRange.offset(0, statusColumnOffset, 1, 1);
https://developers.google.com/apps-script/class_range#offset
如果未指定可选的numRows和numColumns,则为偏移量 返回的范围将与初始范围具有相同的大小,否则 返回的Range调整大小。