Javascript 如何使用GoogleApps脚本在图表服务中使用甜甜圈孔生成3D图表?

Javascript 如何使用GoogleApps脚本在图表服务中使用甜甜圈孔生成3D图表?,javascript,google-apps-script,google-sheets,charts,Javascript,Google Apps Script,Google Sheets,Charts,在Google Sheets中创建图表时,可以通过对话框创建带有甜甜圈孔的3D饼图。如果您尝试使用图表服务进行此操作,它将不起作用,而且在这方面非常直接: 不能组合pieHole和is3D选项;如果您这样做,pieHole将被忽略 现在使用以下代码 函数myOTherFunction(){ const sheets=sheets.Spreadsheets.get(在此处插入文档ID); 用于(一页接一页){ const charts=sheet.charts; 如果(图表) for(让我们来看看

在Google Sheets中创建图表时,可以通过对话框创建带有甜甜圈孔的3D饼图。如果您尝试使用图表服务进行此操作,它将不起作用,而且在这方面非常直接:

不能组合pieHole和is3D选项;如果您这样做,pieHole将被忽略

现在使用以下代码

函数myOTherFunction(){
const sheets=sheets.Spreadsheets.get(在此处插入文档ID);
用于(一页接一页){
const charts=sheet.charts;
如果(图表)
for(让我们来看看图表){
Logger.log(“工作表%s,图表%s,JSON'%s',Sheet.properties.title,String(Chart.chartId),JSON.stringify(Chart.spec));
}
}
}
对于其中一个图表,我得到了以下JSON

{
“隐藏维度策略”:“跳过隐藏的行和列”,
“饼图”:{
“域”:{
“源范围”:{
“资料来源”:[{
“endRowIndex”:21,
“sheetId”:1962284759,
“startRowIndex”:11,
“startColumnIndex”:12,
“endColumnIndex”:13
}
]
}
},
“三维”:没错,
“pieHole”:0.5,
“系列”:{
“源范围”:{
“资料来源”:[{
“startRowIndex”:11,
“endRowIndex”:21,
“startColumnIndex”:11,
“endColumnIndex”:12,
“sheetId”:1962284759
}
]
}
}
},
“字幕文本格式”:{
“foregroundColorStyle”:{
“RGB颜色”:{
“红色”:0.4,
“绿色”:0.4,
“蓝色”:0.4
}
},
“字体大小”:30,
“前底色”:{
“红色”:0.4,
“蓝色”:0.4,
“绿色”:0.4
},
“fontFamily”:“衬线”
},
“fontName”:“serif”,
“副标题”:“没有名字”
}
有趣的是,在
pieChart
中有一个设置
“三维”:true
,我希望它类似于前面提到的文档中不能使用的
is3D
设置。那么它去了哪里?下面的方法不起作用

var chart=Charts.newPieChart()
.setDataTable(数据)
.setOption('subtitle','Sw')
.setOption('subtitleTextStyle.fontSize',30)
.setOption('PieSicleTextStyle.fontSize',12)
.setOption('PieSicleTextStyle.bold',true)
.setOption('sliceVisibilityThreshold',0)
.setOption('pieHole',0.3)
.setOption('legend.position','labeled')
.setOption('PieSicleText','label')
.setOption('pieChart.3d',true)
.设置尺寸(595300)
.build();

这就是我撞到砖墙的地方。还有
is3D
pieChart.3dimensional
,我仍然无法通过编程方式创建带有甜甜圈孔的三维饼图!。解决方案是什么?

我相信你的目标如下

  • 您希望使用Google Apps脚本创建三维饼图
问题和解决方法: 不幸的是,在当前阶段,似乎无法通过使用SpreadsheetApp的电子表格服务实现。为了使用Google Apps脚本创建3D图表,需要使用Sheets API

在这个答案中,我想建议使用Sheets API作为解决方法。幸运的是,我认为您问题中的JSON对象可以用于创建3D饼图

示例脚本: 在使用此脚本之前。另外,请根据您的情况设置工作表名称。在这个脚本中,我在您的问题中使用了JSON对象,添加了
position
属性

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheetId = ss.getSheetByName("Sheet1").getSheetId();
  const resource = {
    "requests": [
      {
        "addChart": {
          "chart": {
            "spec": {
              "hiddenDimensionStrategy": "SKIP_HIDDEN_ROWS_AND_COLUMNS",
              "pieChart": {
                "domain": {
                  "sourceRange": {
                    "sources": [
                      {
                        "endRowIndex": 5,
                        "sheetId": sheetId,
                        "startRowIndex": 0,
                        "startColumnIndex": 0,
                        "endColumnIndex": 1
                      }
                    ]
                  }
                },
                "threeDimensional": true,
                "pieHole": 0.5,
                "series": {
                  "sourceRange": {
                    "sources": [
                      {
                        "startRowIndex": 0,
                        "endRowIndex": 5,
                        "startColumnIndex": 1,
                        "endColumnIndex": 2,
                        "sheetId": sheetId
                      }
                    ]
                  }
                }
              },
              "subtitleTextFormat": {
                "foregroundColorStyle": {
                  "rgbColor": {
                    "red": 0.4,
                    "green": 0.4,
                    "blue": 0.4
                  }
                },
                "fontSize": 30,
                "foregroundColor": {
                  "red": 0.4,
                  "blue": 0.4,
                  "green": 0.4
                },
                "fontFamily": "serif"
              },
              "fontName": "serif",
              "subtitle": "No Name"
            },
            "position": {  // <--- Added
              "overlayPosition": {
                "anchorCell": {
                  "sheetId": 0,
                  "rowIndex": 0,
                  "columnIndex": 3
                }
              }
            }
          }
        }
      }
    ]
  };
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}
函数myFunction(){
const ss=SpreadsheetApp.getActiveSpreadsheet();
const sheetId=ss.getSheetByName(“Sheet1”).getSheetId();
常量资源={
“请求”:[
{
“addChart”:{
“图表”:{
“规格”:{
“隐藏维度策略”:“跳过隐藏的行和列”,
“饼图”:{
“域”:{
“源范围”:{
“资料来源”:[
{
“endRowIndex”:5,
“sheetId”:sheetId,
“startRowIndex”:0,
“startColumnIndex”:0,
“endColumnIndex”:1
}
]
}
},
“三维”:没错,
“pieHole”:0.5,
“系列”:{
“源范围”:{
“资料来源”:[
{
“startRowIndex”:0,
“endRowIndex”:5,
“startColumnIndex”:1,
“endColumnIndex”:2,
“sheetId”:sheetId
}
]
}
}
},
“字幕文本格式”:{
“foregroundColorStyle”:{
“RGB颜色”:{
“红色”:0.4,
“绿色”:0.4,
“蓝色”:0.4
}
},
“字体大小”:30,
“前底色”:{
“红色”:0.4,
“蓝色”:0.4,
“绿色”:0.4
},
“fontFamily”:“衬线”
},
“fontName”:“serif”,
“副标题”:“没有名字”
},
“立场”:{//