為任何想要對其進行測驗的人測驗電子表格

我有一個包含 4 個圖表(只是折線圖)的電子表格,每個圖表都根據下拉串列更改資料,我還從旁邊的幾個單元格中的資料計算我想要的最小值和最大值,代碼基本上只是在嘗試當我使用下拉選單編輯單元格時更新圖表最小值和最大值,但我找不到錯誤在哪里。

function onEdit(e) {
//run dynamic charts switch-case function
const ss= SpreadsheetApp.openById("Sheet-ID");
const sheet = ss.getSheetByName("Analysis2.0");
var range = e.range;
var target = range.getA1Notation();
const charts = sheet.getCharts();
for (var i in charts) {
let chart = charts[i];
const chartName = chart.getOptions().get("title");
if (target == "H18") {
switch (chartName) {
case "#0 Dynamic e1RM Chart":
Utilities.sleep(200);
var vaxis0min = sheet.getRange("E19").getValue();
var vaxis0max = sheet.getRange("F19").getValue();
chart = chart.modify()
.setOption('vAxis', { minValue: vaxis0min })
.setOption('vAxis', { maxValue: vaxis0max })
.build();
sheet.updateChart(chart);
break;
}
}
if (target == "X18") {
switch (chartName) {
case "#1 Dynamic e1RM Chart":
Utilities.sleep(200);
var vaxis1min = sheet.getRange("U19").getValue();
var vaxis1max = sheet.getRange("V19").getValue();
chart = chart.modify()
.setOption('vAxis', { minValue: vaxis1min })
.setOption('vAxis', { maxValue: vaxis1max })
.build();
sheet.updateChart(chart);
break;
}
}
if (target == "AN18") {
switch (chartName) {
case "#2 Dynamic e1RM Chart":
Utilities.sleep(200);
var vaxis2min = sheet.getRange("AK19").getValue();
var vaxis2max = sheet.getRange("AL19").getValue();
chart = chart.modify()
.setOption('vAxis', { minValue: vaxis2min })
.setOption('vAxis', { maxValue: vaxis2max })
.build();
sheet.updateChart(chart);
break;
}
}
if (target == "BD8") {
switch (chartName) {
case "#3 Dynamic e1RM Chart":
var vaxis3min = sheet.getRange("BA19").getValue();
var vaxis3max = sheet.getRange("BB19").getValue();
chart = chart.modify()
.setOption('colors', ['#990000'])
.setOption('vAxis', { minValue: vaxis3min })
.setOption('vAxis', { maxValue: vaxis3max })
.build();
sheet.updateChart(chart);
break;
}
}
}
}
uj5u.com熱心網友回復:
問題:
我安裝了一個 On Edit Trigger,現在它可以作業了,但是執行日志現在每次觸發時都會反映 2 次執行,一次失敗,一次成功,知道這是否正常嗎?如果不是我該怎么辦?
執行失敗說;例外:您無權呼叫 SpreadsheetApp.openById。所需權限:https ://www.googleapis.com/auth/spreadsheets onEdit(onEdits:4:28)
簡單觸發器無法訪問需要身份驗證的服務。由于SpreadsheetApp.openById需要身份驗證,因此該函式失敗。
解決方案:
如果您的腳本系結到電子表格,請替換SpreadsheetApp.openById為SpreadsheetApp.getActive(),以便腳本不需要當前檔案之外的經過身份驗證的訪問。
否則,只需洗掉簡單觸發器(重命名您的函式,以便僅運行已安裝的觸發器 - 您可能必須在更改函式名稱后重新安裝觸發器)。
參考:
- 限制
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485790.html
標籤:javascript 谷歌应用脚本 谷歌表格 图表
