![](/img/trans.png)
[英]Is there a way to apply an onEdit function to multiple separate ranges in google sheets Apps Script?
[英]Add multiple ranges in same function in google sheets
我最近開始為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或負數時清除此相同范圍的單元格中的數據。
如果我的理解是正確的,那么這個答案呢? 我針對您的情況使用了Sheets API的Values.batchGet()和Values.batchUpdate()的2種方法,因為在這種情況下,我認為Sheets API的處理成本低於gets的getValues()和setValues()的處理成本。 SpreadsheetApp。 因此,我認為您的情況有幾個答案。 因此,請僅考慮其中之一。
使用表格API時,請在高級Google服務和API控制台中啟用表格API。 您可以在此處了解有關如何啟用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,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.