0

我目前正在设置 Google Doc 以使用 ImportXML 跟踪实时网络数据,并希望在特定时间间隔后将这些数字复制到其他列。我正在跟踪输入的日期信息,然后每 15 天自动将此信息复制到多个帐户的另一列。到目前为止,这是我在第 1 行上工作的代码,但现在我已经为一个单元格工作了,我想为整个列单独执行此操作:

function moveValuesOnly() {
var sheet = SpreadsheetApp.getActiveSpreadsheet()
var currentValue = sheet.getRange("B4").getValue();
if (currentValue == (15)) {


var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("H4");
var copyRange = ss.getRange("H4");
var l = ss.getDataRange().getValues().length;
var pasteRange = ss.getRange("R4");
pasteRange.setValues(copyRange.getValues());
}}

var sheet = SpreadsheetApp.getActiveSpreadsheet()
var currentValue = sheet.getRange("B5").getValue();
if (currentValue == (30)) {


var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("H4");
var copyRange = ss.getRange("H4");
var l = ss.getDataRange().getValues().length;
var pasteRange = ss.getRange("T5");
pasteRange.setValues(copyRange.getValues());
}

有没有办法让它逐行而不是一次全部评估?我猜我不应该使用范围,但我不知道该怎么做。任何帮助将不胜感激!如果我能澄清任何事情,请告诉我。

谢谢你!

4

1 回答 1

0

你是如何调用这个脚本的?作为电子表格中的公式还是来自脚本编辑器?如果您将其用作公式,则可以直接读取范围。如果您从脚本编辑器中调用它,您可以对您的脚本进行小的更改,使其在比单元格更大的范围内工作。请参阅下面的代码

function moveValuesOnly() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range= sheet.getRange("B4:R20");
var currentValue = range.getValues(); // Change 20 to whatever you want
var COL_B = 0;  // relative to col B 
var COL_H = 6;
var COL_R = 16; 

for(var i = 0 ; i < currentValue.length ; i++){
if (currentValue[i][0] == (15)) {

// Copy value in H4, H5 etc to R4, R5 etc. 
currentValue[i][COL_R] = currentValue[i][COL_H];
}
range.setValues(currentValue);
}

我还没有测试过,但如果你发现任何小错误,请随时修复它:)

于 2013-10-04T04:50:49.560 回答