В Google Sheets как я могу написать скрипт для перемещения каждого рисунка в определенное c место на листе? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть лист Google с четырьмя рисунками, т.е. фигурами. Какой сценарий переместит каждую фигуру в указанное место на листе?

Вот ссылка на пример, в котором я хотел бы щелкнуть синий прямоугольник и заставить сценарий переместить зеленый прямоугольник, чтобы покрыть ячейку A1 , фиолетовый треугольник для ячейки D7 и оранжевый круг для ячейки I3.

https://drive.google.com/open?id=1eFCwDiY90ZM5SIMa6C0rSdhG_oC-SWgsk8vAvjIR34s

Я не могу найти способ выбрать конкретную c чертежи.

1 Ответ

3 голосов
/ 02 мая 2020

Я полагаю, что ваша цель заключается в следующем.

  • Вы хотите переместить чертеж следующим образом при нажатии на синий прямоугольник.
    • Переместите зеленый прямоугольник в ячейку «A1».
    • Переместите фиолетовый треугольник в ячейку «D7».
    • Переместите оранжевый кружок в ячейку «I3» .

Как насчет этого ответа?

Проблема и обходное решение:

К сожалению, на текущем этапе каждый рисунок не может различаться по цвету объекта и идентификатору. Поэтому для достижения вашей цели, в качестве обходного пути, я хотел бы предложить поместить каждый чертеж в заранее определенные ячейки и использовать каждый чертеж в качестве идентификатора якорной ячейки.

Использование:

1. Задайте имя функции.

  1. Скопируйте и вставьте следующий пример сценария.
  2. Сначала установите имя функции myFunction на "синий прямоугольник".
  3. В качестве образца предварительно определенных ячеек для каждого рисунка, пожалуйста, поместите верхний левый угол «зеленого прямоугольника», «фиолетового треугольника» и «оранжевого круга» в ячейки «A10», «A13» и «A18». соответственно. Вы можете увидеть его на следующем изображении.

    enter image description here

  4. Запустите следующий пример сценария, нажав «синий прямоугольник».

2. Пример сценария.

function myFunction() {
  // 1. Prepare an object for searching Drawings.
  const obj = {
    "10": {name: "green rectangle", moveTo: [1, 1]}, // <--- A1
    "13": {name: "purple triangle", moveTo: [7, 4]}, // <---  D7
    "18": {name: "orange circle", moveTo: [3, 9]}, // <---  I3
  };

  // 2. Retrieve sheet.
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

  // 3. Move drawings.
  sheet.getDrawings().forEach(d => {
    const arow = d.getContainerInfo().getAnchorRow();
    if (arow in obj) {
      d.setPosition(...obj[arow].moveTo, 0, 0);
    }
  })
}
  • В этом случае синий прямоугольник имеет имя функции myFunction. И каждый рисунок извлекается с использованием якорных ячеек в качестве идентификатора.
  • Чтобы запустить этот скрипт, щелкните синий прямоугольник, который был установлен myFunction. Таким образом, каждый чертеж перемещается.

Результат:

При запуске сценария для указанного выше входного изображения могут быть получены следующие выходные данные.

Примечание:

  • Это пример сценария. Поэтому, пожалуйста, измените это для вашей реальной ситуации.

enter image description here

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...