Я не думаю, что вы пытаетесь сделать в настоящее время возможно.
Класс OverGridImage был выпущен совсем недавно , и нет способа получить Blob для таких изображений. На самом деле существует открытый запрос функций в системе отслеживания проблем. Поскольку интерфейс BlobSource , связанный с этим классом, отсутствует, получить ссылку на это изображение невозможно, если вы загрузили его с устройства. И в настоящее время также нет способа извлечь изображение через Sheets API.
Теоретически, если вы добавите изображение через URL, можно будет получить URL через getUrl () и вставьте его на лист с помощью insertImage (url, column, row) , но getUrl
не работает надежно, по крайней мере для некоторых изображений (существует открытый выпуск в Issue Tracker для решения этой проблемы).
Временное решение (в некотором роде):
Единственное, о чем я могу подумать, - это добавить вручную URL-адрес, к которому можно получить доступ (например, в описание изображения) и используйте этот URL для вставки изображения на другой лист. Затем вы можете использовать функцию в следующем формате:
function onEdit(e) {
var range = e.range;
var value = range.getValue();
var editedSheet = range.getSheet();
if (range.getA1Notation() === "G7" && editedSheet.getName() === "Destination" && value != "") {
// Remove previous images from "Destination" sheet:
var currentImages = editedSheet.getImages();
for (var i = 0; i < currentImages.length; i++) {
currentImages[i].remove();
}
// Get correct url from "Origin" sheet:
var origin = e.source.getSheetByName("Origin");
var images = origin.getImages();
var blob;
for (var j = 0; j < images.length; j++) {
if (images[j].getAltTextTitle() === value) { // Check if "Alt text" matches the dropdown value
url = images[j].getAltTextDescription(); // Get url (first added in description)
break;
}
}
// Insert new image in "Destination":
editedSheet.insertImage(url, 1, 1);
}
}
Надеюсь, это поможет.