gpt4 book ai didi

javascript - 使用更改一个单元格时更新谷歌表格中的一系列单元格

转载 作者:行者123 更新时间:2023-11-30 19:15:33 25 4
gpt4 key购买 nike

我想使用 JavaScript 更新 Google 表格中的一系列单元格。代码没有抛出任何错误,但也不起作用。

function OnEditDate(e){    
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var act = ss.getActiveSheet();
var i;
var j;

for(i = 2; i = 30; i++){
for(j = 5; j = 20; j++){
var newVal = act.getRange(i+1,j).getValue();
act.getRange(i,j).setValue(newVal);

}
}
}

这应该通过将所有单元格的内容移动到左边的一个单元格来更新 E2:U30 范围内的所有单元格。

最佳答案

让我们从一些观察开始......

您的 for 循环没有正确指定。

The for loop syntax is for ([initialization]; [condition]; [final-expression]) .

你的条件语句是i = 30j = 20,它们是赋值语句。因此,除了破坏您的预期逻辑之外,它们的计算结果也始终为 true。您应该改为使用比较运算符,例如 i >= 30j >= 30

此外,您不应在内部调用 API 方法,例如 getRange()getValue()setValue() for 循环。这些操作很慢,会导致脚本需要很长时间才能完成。

你应该use batch operations在尽可能少的 API 调用中获取/设置您想要更新的整个单元格范围。

在您的情况下,由于您没有处理数据,您实际上不需要循环遍历数据

这是执行您描述的移动的实现:

function moveCells() {
var sheet = SpreadsheetApp.getActiveSheet();

var startingColumn = 5; // Column E
var startingRow = 2; // Row 2
var numColumns = 17; // to Column U
var numRows = 29; // to Row 30

// Get the source range which contains the data.
var sourceRange = sheet.getRange(startingRow, startingColumn, numRows, numColumns);

// Get the target range (i.e. same size as sourceRange, but starting one column
// to the left).
var targetRange = sheet.getRange(startingRow, startingColumn - 1, numRows, numColumns);

// Get all of the values from sourceRange into a 2-dimensional array.
var values = sourceRange.getValues();

// Clear all of the cells in sourceRange.
sourceRange.clearContent();

// Set the cell values targetRange, using the values extracted from sourceRange.
targetRange.setValues(values);
}

请注意,我使用的是 4 argument version of getRange() ,它允许您使用单元格网格。

同样,我正在使用 getValues()setValues() ,它允许您在一次操作中获取和设置整个单元格网格。

关于javascript - 使用更改一个单元格时更新谷歌表格中的一系列单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com