Невозможно вставить диаграмму листов в презентацию через Google Slides API - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь вставить диаграмму в презентацию Google Slides, используя CreateSheetsChartRequest.

Запрос не выполнен с ошибкой:

Ошибка выполнения: GoogleJsonResponseException: Invalidзначение в 'request [0] .create_sheets_chart.chart_id' (TYPE_INT32), "u1935822328711"

Пример кода:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var chartSheet = ss.getSheets()[0];

// get chart id via Sheets API
// returns string like 'u1935822328711'
var chartId = chartSheet.getCharts()[0].getId();

var slidesReqs = [];

slidesReqs.push({
  createSheetsChart: {
    objectId: 'someSlideChartId',
    elementProperties: {
      pageObjectId: slideId,
      size: {
        width: {
          magnitude: (7/9)*900,
          unit: 'PT'
        },
        height: {
          magnitude: (7/9)*560,
          unit: 'PT'
        }
      },
      transform: {
        scaleX: 1,
        scaleY: 1,
        translateX: 100000,
        translateY: 100000,
        unit: 'EMU'
      }
    },
    spreadsheetId: ss.getId(),
    chartId: chartId,
    linkingMode: 'NOT_LINKED_IMAGE'
  }
});

// throws error
// Execution failed: GoogleJsonResponseException: Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), "u1935822328711"
Slides.Presentations.batchUpdate({'requests': slidesReqs}, presentationFileId);

Я вижу, что CreateSheetsChartRequest ожидает, что поле chartId будет целочисленным, но API Google Sheets возвращает строку типа "u1935822328711" для идентификатора диаграммы.

Как вставить диаграмму Google Sheets в слайд?

1 Ответ

0 голосов
/ 17 мая 2018

Короткий ответ

Использование getChartId() вместо getId().

Объяснение

EmbeddedChart.getId() возвратидентификатор, который полезен только в контексте UiApp, устаревшей службы для создания компонентов на основе компонентов.

Однако на сегодняшний день в классе EmbeddedChart существует метод с именем getChartId(), который возвращает уникальное стабильное целое число обозначение графика.

Если вы измените одну строку в вашем коде на

var chartId = chartSheet.getCharts()[0].getChartId();

, ваш CreateSheetsChartRequest теперь должен работать.

Источник: https://issuetracker.google.com/issues/79784012#comment2

...