google-apps-script - 是否可以通过 Google Sheets API 设置图表选项?
问题描述
我能够更新“堆积面积图”,但是我无法弄清楚如何在水平轴上设置“将标签视为文本”。(这在 UI 中通过单击“编辑图表 -> 自定义 -> 水平轴 -> 将标签视为文本”来完成)
有谁知道用 Sheets API 做到这一点的方法?还有其他方法吗?
谢谢!!
解决方案
- 您想
Treat labels as text
在 Google 电子表格中设置图表。 - 您想使用 Sheets API 来实现这一点。
如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。
问题和解决方法:
Treat labels as text
不幸的是,我在请求正文中找不到要设置的属性。我准备了 2 种模式的 checkedTreat labels as text
和 unchecked Treat labels as text
,当这两种模式与使用电子表格.get 方法检索到的图表对象进行比较时,我发现两者没有区别。至此,我认为在当前阶段,Treat labels as text
Sheets API 中没有设置方法。
因此,作为几种解决方法之一,在这里,我想建议将 Web 应用程序用作 API。使用 Google Apps 脚本时,Treat labels as text
可以设置。此解决方法使用此方法。
用法:
此变通方法的用法如下。
1. 新建 Google Apps Script 项目。
Web Apps 的示例脚本是 Google Apps 脚本。所以请创建一个 Google Apps Script 项目。
如果要直接创建,请访问https://script.new/。在这种情况下,如果您没有登录 Google,则会打开登录屏幕。所以请登录谷歌。至此,Google Apps Script 的脚本编辑器被打开。
2. 复制粘贴脚本。
请复制并粘贴以下脚本。
function doGet(e) {
var spreadsheetId = e.parameter.spreadsheetId;
var chartId = e.parameter.chartId;
var treatLabelsAsText = e.parameter.treatLabelsAsText;
var ss = SpreadsheetApp.openById(spreadsheetId);
var sheets = ss.getSheets();
var done = false;
for (var i = 0; i < sheets.length; i++) {
var charts = sheets[i].getCharts();
if (charts.length > 0) {
for (var j = 0; j < charts.length; j++) {
if (charts[j].getChartId() == chartId) {
var modifiedChart = charts[j].modify().setOption('treatLabelsAsText', treatLabelsAsText).build();
sheets[i].updateChart(modifiedChart);
done = true;
break;
}
}
if (done) break;
}
}
return ContentService.createTextOutput("Done.");
}
3. 部署 Web 应用程序。
- 在脚本编辑器上,通过“发布”->“部署为 Web 应用程序”打开一个对话框。
- 为“将应用程序执行为:”选择“我” 。
- 为“谁有权访问应用程序:”选择“任何人,甚至匿名” 。
- 此设置用于测试此解决方法。
- 当“仅限我自己”设置为“谁有权访问应用程序:”时,需要使用访问令牌。
- 单击“部署”按钮作为新的“项目版本”。
- 自动打开“需要授权”对话框。
- 单击“查看权限”。
- 选择自己的帐户。
- 在“此应用未验证”中单击“高级”。
- 点击“转到###项目名称###(不安全)”
- 单击“允许”按钮。
- 单击“确定”。
- 复制 Web 应用程序的 URL。就像
https://script.google.com/macros/s/###/exec
。- 当您修改 Google Apps 脚本时,请重新部署为新版本。这样,修改后的脚本就会反映到 Web 应用程序中。请注意这一点。
4. 样品卷曲。
为了测试对 Web 应用程序的访问,请使用以下 curl 命令。
curl -GL \
-d "spreadsheetId=###" \
-d "chartId=###" \
-d "treatLabelsAsText=true" \
"https://script.google.com/macros/s/###/exec"
如果您将 Web 应用程序部署为“谁有权访问应用程序:”的“仅我自己”,请按如下方式使用您的访问令牌。
curl -GL \
-H "Authorization: Bearer ###" \
-d "spreadsheetId=###" \
-d "chartId=###" \
-d "treatLabelsAsText=true" \
"https://script.google.com/macros/s/###/exec"
- 请设置上面检索到的 Web Apps 的 URL 以及电子表格 ID、图表 ID 和 的值
treatLabelsAsText
。 - 运行上述 curl 命令时,会检查电子表格中特定图表的“将标签视为文本”。你可以
Done.
在控制台看到。
笔记:
- 当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。
- 当您想使用访问令牌时,请包括访问令牌的范围
https://www.googleapis.com/auth/drive.readonly
和/或https://www.googleapis.com/auth/drive
访问令牌。
参考:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
推荐阅读
- reactjs - ReactNative:如何让第二个文本组件共享 1 个文本组件溢出的行
- c - 堆栈显示垃圾值
- python-3.x - 在日历上循环三遍
- wear-os - 应该使用什么来代替已弃用的 RotaryEncoder.getScaledScrollFactor() 方法?
- java - 有没有一种优雅的方法来重命名 Java 布尔值以提高我的代码的可读性?
- python - How to Cancel Subscription created think Checkout Session Stripe API
- r - Faceted Boxplots
- c# - System.Text.Json 到 Newtonsoft Json
- dictionary - 无法使用地图更改网址并进行重定向
- python - 如何循环通过各种训练和测试拆分