gpt4 book ai didi

google-apps-script - 使用 Google Apps 脚本复制 Google 表格中的图表

转载 作者:行者123 更新时间:2023-11-29 10:46:34 25 4
gpt4 key购买 nike

我在 Google 表格中创建了一个图表。现在我需要复制图表。

图表有UI复制界面。我试图在 Google Apps 脚本中复制它,但没有成功:

function copyChart() {
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
var chartCopy = sheet.newChart();
chartCopy = chart;
sheet.insertChart(chartCopy);
}

如何制作复制当前电子表格中第一个图表的工作脚本?

最佳答案

以电子表格服务的当前状态,无法完全复制现有的 EmbeddedChart。不过,可以复制图表的一部分,然后设置其余选项。

如果/当 API 变得更完整时,可以扩展此实用程序功能。 (或者如果谷歌完善了克隆,它可能会被淘汰!)

/**
* Returns a new EmbeddedChart instance with some properties
* replicated from the original.
*
* @param {EmbeddedChart} original source chart to be cloned
* @returns {EmbeddedChart} new, cloned chart
*/
function cloneChart( original ) {
original = original.modify(); // Necessary for read-access to some properties(!)
var clone = SpreadsheetApp.getActiveSheet().newChart();

// Set chart type
clone.setChartType(original.getChartType());

// Set position - caller should provide unique position
var originalContainer = original.getContainer();
var originalPostion = { anchorRowPos: originalContainer.getAnchorRow(),
anchorColPos: originalContainer.getAnchorColumn(),
offsetX: originalContainer.getOffsetX(),
offsetY: originalContainer.getOffsetY()
};

clone.setPosition(originalPostion.anchorRowPos,
originalPostion.anchorColPos,
originalPostion.offsetX,
originalPostion.offsetY);

// Copy ranges
var ranges = original.getRanges();
for (r=0; r<ranges.length; r++) {
clone.addRange(ranges[r]);
}

return clone.build();
}

例如:

function copyChart() {
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
var newChart = cloneChart(chart,customLineChart);
sheet.insertChart(newChart);

var numcharts = sheet.getCharts().length;
debugger;
return;
var chartBlob = chart.getBlob();
var builder = sheet.newChart();
chartCopy = chart;
sheet.insertChart(chartCopy);
}

/*
* Customize settings for line charts
*/
function customLineChart( chartBuilder ) {
chartBuilder.asLineChart()
.setTitle('Chart Title (Copy)')
.setOption('legend', {position: 'right', textStyle: {fontSize: 16}})
.setOption('height', 350)
.setOption('width', 450);
// ....
}

这还没有完成,但这是一个开始。很遗憾这部分 API 如此不足。

Screenshot

关于google-apps-script - 使用 Google Apps 脚本复制 Google 表格中的图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com