Как удалить набор диаграмм в определенном диапазоне в электронной таблице с помощью скрипта Google Apps?

У меня есть диаграммы построения кода в строке активной ячейки в столбце 9. Теперь, прежде чем сценарий удалит исходный лист этой диаграммы, я хотел бы получить набор диаграмм в этом конкретном диапазоне (строка, столбец) и удалить его. .

var charts1 = newSheet.getCharts();
      chart = charts1[charts1.length - 1];
      chart = newSheet.newChart()
        .asLineChart()
        .addRange(newSheet.getRange(ticker + '!M71:P175'))
        .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
        .setTransposeRowsAndColumns(false)
        .setNumHeaders(1)
        .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
        .setOption('bubble.stroke', '#000000')
        .setOption('useFirstColumnAsDomain', false)
        // ...other .setOption()'s...
        .setOption('width', 305)
        .setPosition(activeCell, 9, 1, 1) //This is where the chart is set to be built
        .build();
      listOfStocks.insertChart(chart);

Я пробовал получить этот диапазон, но getCharts(), чтобы затем удалить его, но ничего подобного не подходит.

Как это может быть сделано?


person Antonio Santos    schedule 10.04.2021    source источник
comment
см. информацию о контейнере класса   -  person Cooper    schedule 11.04.2021
comment
Спасибо, @Cooper! Мне было трудно интерпретировать документацию ... правда, я работал над ней понемногу.   -  person Antonio Santos    schedule 11.04.2021


Ответы (1)


Я считаю вашей целью следующее.

  • Вы хотите удалить диаграмму, используя координату ячейки на диаграмме, используя скрипт Google Apps.

Чтобы удалить диаграмму, вы можете использовать метод removeChart в Таблице классов. И координаты диаграммы могут быть получены методом getContainerInfo. Когда образец сценария подготовлен с использованием этих методов, он выглядит следующим образом.

Пример сценария:

Перед использованием этого сценария установите переменные searchRow, searchColumn и sheetName.

function myFunction() {
  const searchRow = 1;
  const searchColumn = 9;
  const sheetName = "Sheet1";

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.getCharts().forEach(c => {
    const container = c.getContainerInfo();
    if (container.getAnchorRow() == searchRow && container.getAnchorColumn() == searchColumn) {
      sheet.removeChart(c);
    }
  });
}
  • В этом примере сценария диаграмма, помещенная в ячейку I1, удалена. В этом случае эта координата совпадает с верхней левой частью диаграммы.

Примечание:

  • Если вы хотите удалить все диаграммы в столбце I, вы также можете использовать следующий сценарий.

      const searchColumn = 9;
      const sheetName = "Sheet1";
    
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
      sheet.getCharts().forEach(c => {
        const container = c.getContainerInfo();
        if (container.getAnchorColumn() == searchColumn) {
          sheet.removeChart(c);
        }
      });
    

Использованная литература:

person Tanaike    schedule 11.04.2021
comment
Большое вам спасибо за это. Я даже пробовал читать документацию, но мои слабые знания все еще не позволяют правильно интерпретировать. - person Antonio Santos; 11.04.2021
comment
Я закончил его немного модифицировать, чтобы удалить все диаграммы строки вместо опции столбца. Идеально! Спасибо! - person Antonio Santos; 11.04.2021