Решение на данный момент
function insertImageToCell() {
const image = SpreadsheetApp
.newCellImage()
.setSourceUrl('https://upload.wikimedia.org/wikipedia/commons/5/50/Smile_Image.png')
.build();
SpreadsheetApp.getActiveRange()
.setValue(image);
}
Предыдущий ответ
Сам процесс вставки картинки довольно специфический и может потребовать определенных навыков. Поэтому я приведу уже готовый пример, основанный на публичном коде. Все это работает не очень быстро, поэтому вам необходимо задуматься о заранее подготовленных картинках и куда вы их будете вставлять. Порции функции такие: на один лист массив из картинок с координатами. Т.е. на один лист можно сразу добавить несколько картинок. Это будет самым оптимальным способом именно из-за специфики вставки.
Функция вставки
/**
* Insert a single image to the cell. A1 is default
*
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet
* @param {GoogleAppsScript.Base.Blob} blob
* @param {number} row
* @param {number} column
*/
function insertImageBlobToCell_(sheet, blob, row = 1, column = 1) {
const sheetName = sheet.getName();
const parentId = sheet.getParent().getId();
return DocsServiceApp.openBySpreadsheetId(parentId)
.getSheetByName(sheetName)
.insertImage([{ blob, range: { row, column } }]);
}
Пример вызова
/**
* Insert an image blob to the cell
*/
function userActionRun() {
const sheet = SpreadsheetApp.getActiveSheet();
const blob = UrlFetchApp.fetch(
'https://contributor.pw/img/post/sheets/sheets_mmult-some-uses-cases_01.png'
).getBlob();
insertImageBlobToCell_(sheet, blob);
}
Результат
Не забудьте добавить библиотеку 108j6x_ZX544wEhGkgddFYM6Ie09edDqXaFwnW3RVFQCLHw_mEueqUHTW
в свой проект. Пример манифеста в сниппете