Google apps script 如何将2D数组作为范围传递给Google电子表格图表?
假设我们有: A栏:Google apps script 如何将2D数组作为范围传递给Google电子表格图表?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,假设我们有: A栏: Cat Dog Pig B栏: 2 3 4 添加新的图表功能: function newChart() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var activeRange = sheet.getActiveRange(); var data = ss.getSheets()[0]; Logger.log(activeR
Cat
Dog
Pig
B栏:
2
3
4
添加新的图表功能:
function newChart() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var activeRange = sheet.getActiveRange();
var data = ss.getSheets()[0];
Logger.log(activeRange.getValues())
var chart = data.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(activeRange)
.setPosition(3, 2, 0, 0)
.setOption('title','Farm')
.build();
data.insertChart(chart);
}
细胞A1:B3中的活性范围;
activeRange值(二维数组):
但当我尝试将2D数组作为范围传递时
var range = [['Cat', 2.0], ['Dog', 3.0], ['Pig', 4.0]];
var chart = data.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(range)
.setPosition(3, 2, 0, 0)
.setOption('title','Farm')
.build();
我得到了下一个错误:
无法将数组转换为范围
请帮助我了解如何将2D数组作为范围传递 通过将中的值设置为范围,可以尝试将数组对象转换为范围。检查以下代码:
function newChart() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = [['Cat', 2.0], ['Dog', 3.0], ['Pig', 4.0]];
var activeRange = sheet.getRange(1, 1, 3, 2).setValues(range);
var data = ss.getSheets()[0];
var chart = data.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(activeRange)
.setPosition(3, 2, 0, 0)
.setOption('title','Farm')
.build();
data.insertChart(chart);
}
已尝试并能够获取数组值的饼图。希望有帮助 以防万一这对某人有用。从活动范围创建图表的简单功能:
// global
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var activeRange = sheet.getActiveRange();
function newChart() {
// Get values from Active Range:
var source = activeRange.getValues();
// Get only unique entries (uses 2D Arrays Library):
var uniqueCount = ArrayLib.unique(source)
// Some rearrangemen to get propper output:
var sourceOutput = [];
for(var i = 0; i < uniqueCount.length; i++)
{
sourceOutput = sourceOutput.concat(uniqueCount[i]);
}
// Empty arr
var empArr = new Array([]);
var counts = {};
for(var i = 0; i< source.length; i++) {
var num = source[i];
if(empArr < num){
counts[num] = counts[num] ? counts[num]+1 : 1;
}
}
var keyArray = Object.keys(counts).map(function (key) {return counts[key]});
var output=[];
for(i=0;i<sourceOutput.length;i++){
output.push( [sourceOutput[i], keyArray[i] ]);
};
Logger.log(output)
// Create a chart
var data = ss.getSheets()[0];
var outputRange=data.getRange(10, 1, uniqueCount.length, 2).setValues(output);
var chart = data.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(outputRange)
.setPosition(3, 3, 0, 0)
.setOption('title','%your_title%')
.build();
data.insertChart(chart);
}
//全局
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var activeRange=sheet.getActiveRange();
函数newChart(){
//从活动范围获取值:
var source=activeRange.getValues();
//仅获取唯一条目(使用二维数组库):
var uniqueCount=ArrayLib.unique(源)
//有些人希望获得支撑器输出:
var sourceOutput=[];
对于(变量i=0;i 对于(i=0;iit需要一个工作表范围而不是一个数组。请参阅其他图表方法,可能还有另一种用于PASS原始数据的方法。
// global
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var activeRange = sheet.getActiveRange();
function newChart() {
// Get values from Active Range:
var source = activeRange.getValues();
// Get only unique entries (uses 2D Arrays Library):
var uniqueCount = ArrayLib.unique(source)
// Some rearrangemen to get propper output:
var sourceOutput = [];
for(var i = 0; i < uniqueCount.length; i++)
{
sourceOutput = sourceOutput.concat(uniqueCount[i]);
}
// Empty arr
var empArr = new Array([]);
var counts = {};
for(var i = 0; i< source.length; i++) {
var num = source[i];
if(empArr < num){
counts[num] = counts[num] ? counts[num]+1 : 1;
}
}
var keyArray = Object.keys(counts).map(function (key) {return counts[key]});
var output=[];
for(i=0;i<sourceOutput.length;i++){
output.push( [sourceOutput[i], keyArray[i] ]);
};
Logger.log(output)
// Create a chart
var data = ss.getSheets()[0];
var outputRange=data.getRange(10, 1, uniqueCount.length, 2).setValues(output);
var chart = data.newChart()
.setChartType(Charts.ChartType.PIE)
.addRange(outputRange)
.setPosition(3, 3, 0, 0)
.setOption('title','%your_title%')
.build();
data.insertChart(chart);
}