Charts.Chart
Google 스프레드 시트에 를 삽입하는 방법을 찾고 있습니다 (하지만 사용자 양식, Google 문서 등과 같은 다른 지원에도 삽입 할 수 있기를 원합니다.)
function generateChart(data) {
var chartBuilder = Charts.newBarChart();
// Miscellaneous such as titles, dimensions and data
// ..
;
var chart = chartBuilder.build();
return chart;
}
또한 스프레드 시트 범위의 차트 값을 직접 사용하고 싶지는 않지만 (일부 데이터 조작이있을 것입니다 ..), from data
where is a struct of array of array.
data = {
field1: [..],
field2: ..
}
따라서 기본적으로 Sheet에 대한 종속성을 생성하는 것과 같은 것을 피하고 싶습니다.
var sheet = SpreadsheetApp.getActiveSheet();
var chartBuilder = sheet.newChart()
// ..
;
을 쓰면 sheet.insertChart(generateChart(data))
다음과 같은 오류가 발생합니다. 나는 같은 종류의을 다루지 않기 때문에 의미 Chart
가 있지만 작업이 있습니까?
예외 : 매개 변수 (Charts.Chart)가 SpreadsheetApp.Sheet.insertChart의 메서드 서명과 일치하지 않습니다.
blob
Google Sheet Chart 형식과 호환되도록 변환하면 안되는지 궁금 합니다.하지만이를 달성하는 더 간단한 방법이 있다고 확신합니다.
통찰력에 감사드립니다!
Charts에 대한 문서에 따르면 creates a basic data table, populates an area chart with the data, and adds it into a web page as an image
. 이미지 URL과 Blob도 가져올 수 있습니다.
Charts에서 제공하는 URL을 사용하는 insertImage 함수를 사용합니다.
function myFunction() {
var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Year")
.addColumn(Charts.ColumnType.NUMBER, "Sales")
.addColumn(Charts.ColumnType.NUMBER, "Expenses")
.addRow(["2004", 1000, 400])
.addRow(["2005", 1170, 460])
.addRow(["2006", 660, 1120])
.addRow(["2007", 1030, 540])
.addRow(["2008", 800, 600])
.addRow(["2009", 943, 678])
.addRow(["2010", 1020, 550])
.addRow(["2011", 910, 700])
.addRow(["2012", 1230, 840])
.build();
var chart = Charts.newColumnChart()
.setTitle('Sales & Expenses')
.setXAxisTitle('Year')
.setYAxisTitle('Amount (USD)')
.setDimensions(600, 500)
.setDataTable(data)
.build();
var htmlOutput = HtmlService.createHtmlOutput().setTitle('My Chart');
var imageData = Utilities.base64Encode(chart.getAs('image/png').getBytes());
var imageUrl = "data:image/png;base64," + encodeURI(imageData);
// Insert the image in the A1
SpreadsheetApp.getActiveSheet().insertImage(imageUrl, 1, 1);
}
insertInlineImage를 사용합니다 .
function myFunction() {
var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Year")
.addColumn(Charts.ColumnType.NUMBER, "Sales")
.addColumn(Charts.ColumnType.NUMBER, "Expenses")
.addRow(["2004", 1000, 400])
.addRow(["2005", 1170, 460])
.addRow(["2006", 660, 1120])
.addRow(["2007", 1030, 540])
.addRow(["2008", 800, 600])
.addRow(["2009", 943, 678])
.addRow(["2010", 1020, 550])
.addRow(["2011", 910, 700])
.addRow(["2012", 1230, 840])
.build();
var chart = Charts.newColumnChart()
.setTitle('Sales & Expenses')
.setXAxisTitle('Year')
.setYAxisTitle('Amount (USD)')
.setDimensions(600, 500)
.setDataTable(data)
.build();
var image = chart.getAs('image/png')
// Insert an image chart
var doc = DocumentApp.getActiveDocument();
var cursor = doc.getCursor();
if (cursor) {
cursor.insertInlineImage(image);
} else {
doc.getBody().insertImage(0, image);
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다