Обновить ссылки на диаграммы для новой копии отчета и новой копии книги.Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Обновить ссылки на диаграммы для новой копии отчета и новой копии книги.

Сообщение Anonymous »

Я использую appscript (Google для разработчиков), чтобы попытаться написать сценарий для ежемесячного отчета, который я делаю. По сути, я беру одинаковые слайды Google каждый месяц и делаю копию, а затем копию соответствующей книги.

Код: Выделить всё

function updateChartLinks() {
// Replace with the ID of the presentation you want to update
var presentationId = "abcdefg";
// Replace with the ID of the new spreadsheet you want to link to
var spreadsheetId = "abcdefg";

var ss2 = SpreadsheetApp.openById(spreadsheetId);
var sheet2 = ss2.getSheets()[0];
var chart2 = sheet2.getCharts()[0];
Logger.log('spreadsheet2 name is ' + ss2.getName());

// get all charts from all sheets of the spreadsheet copy
var sheets2 = ss2.getSheets();
var allCharts = []; // keep track of all charts on all sheets of the spreadsheet
var allChartsIds = []; // keep track of the ids for all the charts
var chartsnum = 0;
for (var i = 0; i < sheets2.length; i++) {
var curSheet2 = sheets2[i];
if (curSheet2) { // Check if curSheet2 is defined
var charts2 = curSheet2.getCharts();
for (var j = 0; j < charts2.length; j++) {
var curChart2 = charts2[j];
allCharts[chartsnum] = curChart2;
allChartsIds[chartsnum] = curChart2.getChartId();
chartsnum++;
Logger.log('\n chart2 Id is ' + curChart2.getChartId());
}
}
}

//total number of charts in all sheets of the spreadsheet
var lengthAllCharts = allCharts.length;
var pres2 = SlidesApp.openById(presentationId);
Logger.log('pres2 name is ' + pres2.getName());

var slides2 = pres2.getSlides();
for (var i = 0; i < slides2.length; i++) {
var slide = slides2[i];
var shapes = slide.getShapes();

shapes.forEach(shape => {
if (shape.getShapeType() == SlidesApp.ShapeType.CHART) {
var chart = shape.asChart();
var chartData = chart.getChartData();

// Assuming the charts are in the same order as in the new spreadsheet
var newChart = allCharts.shift();

chartData.setDataSourceId(newChart.getChartId());
chart.setChartData(chartData);

// Force a refresh of the chart data
chart.refresh();
}
});
}
}
Проблема в том, что копии слайдов Google по-прежнему связаны с исходной книгой, а не с копией. Эти презентации обычно очень длинные и содержат более 30-50 диаграмм. Вместо того, чтобы копировать и вставлять каждую отдельную диаграмму, я хотел бы написать сценарий, который берет копию презентации и повторно связывает встроенные диаграммы с копией книги. Я хотел бы запустить его вручную. Насколько я понимаю, у меня такое чувство, что в нижней части кода все идет не так - код будет работать, но в конце, когда я обновляю копию презентации, она все еще связана с оригиналом. рабочая книга (не копия).

Подробнее здесь: https://stackoverflow.com/questions/793 ... kbook-copy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»