根据传递的时间自动将值粘贴到另一列

时间:2013-10-03 21:33:53

标签: google-apps-script

我目前正在设置Google文档以使用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());
}

有没有办法让它逐行评估而不是一次评估?我猜我不应该使用范围,但我不知道如何做到这一点。任何帮助将非常感谢!!如果我能澄清一切,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分: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);
}

我没有对它进行测试,但如果您发现任何轻微错误,请随时修复它:)