我最近开始为Google表格编写简单的函数,并且希望将以下函数扩展到所有范围: D10:D12,H10:H12,D16:D18,H16:H18,D22:D24,H22:H24,D28:D30,H28:H30,D34:D36和H34:H36。
getRange括号中的内容的语法是什么?
function nextRound() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
var cell = spreadsheet.getRange("D10");
var cellValue = cell.getValue();
cell.setValue(cellValue - 1);
}
由于此功能对单元格D10正常起作用,但是如果我将D10更改为D10:D12,它将把D10 -1的销售价值放在其他两个单元格中,这不是我想要的。运行该函数时,我希望D10中的新值是D10-1(因为当前有效),但是D11中的新值是D11-1,等等。
哦,如果可能的话,我还要向按钮添加第二个功能,以在其中一个单元格达到0或负数时清除来自同一范围单元格的数据。
答案 0 :(得分:1)
如果我的理解正确,那么这个答案如何?我针对您的情况使用了Sheets API的Values.batchGet()和Values.batchUpdate()的2种方法,因为在这种情况下,我认为Sheets API的处理成本低于gets的getValues()和setValues()的处理成本。 SpreadsheetApp。因此,我认为您的情况有几个答案。因此,请仅考虑其中之一。
使用表格API时,请在高级Google服务和API控制台上启用表格API。您可以在here上查看有关如何启用Sheets API的信息。
请如下修改nextRound()
。
function nextRound() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
var id = ss.getId();
var sheetName = spreadsheet.getSheetName();
var ranges = ["D10:D12", "H10:H12", "D16:D18", "H16:H18", "D22:D24", "H22:H24", "D28:D30", "H28:H30", "D34:D36", "H34:H36"];
ranges = ranges.map(function(e) {return sheetName + "!" + e});
var r = Sheets.Spreadsheets.Values.batchGet(id, {ranges: ranges});
var resource = {
data: r.valueRanges.map(function(e) {return {
range: e.range,
values: e.values.map(function(f) {return [Number(f[0]) + 1]}),
}}),
valueInputOption: "USER_ENTERED",
};
Sheets.Spreadsheets.Values.batchUpdate(resource, id);
}
请按如下所示修改“问题1”的脚本。
从:values: e.values.map(function(f) {return [Number(f[0]) + 1]}),
至:
values: e.values.map(function(f) {return [Number(f[0]) <= 0 ? "" : Number(f[0])]}),
values: e.values.map(function(f) {return [Number(f[0]) <= 0 ? "" : Number(f[0]) || ""]}),
。如果我误解了您的问题,请告诉我。我想修改它。
错误的原因是由于单元格为空。因此,请进行如下修改。
values: e.values.map(function(f) {return [Number(f[0]) + 1]}),
至:
values: e.values ? e.values.map(function(f) {return [f[0] ? Number(f[0]) + 1 : ""]}) : null,
values: e.values.map(function(f) {return [Number(f[0]) <= 0 ? "" : Number(f[0])]}),
至:
values: e.values ? e.values.map(function(f) {return [Number(f[0]) <= 0 || !f[0] ? "" : Number(f[0])]}) : null,