Это может быть решением для некоторых потребностей.
Моя особая потребность заключалась в том, чтобы: пройтись по столбцу имен файлов и вытащить URL-адрес Документов Google с установленным интервалом.Код ниже просто перебирает имена файлов в "Column A"
из "My Sheet"
и возвращает значение в соседнюю ячейку "Column B"
(начиная со строки 2, потому что у меня были заголовки столбцов).Я не беспокоюсь о безопасности, потому что я ссылаюсь только на внутренние файлы организации.
Чтобы код ниже работал, вам нужно:
- Google Sheet Doc Nav> Инструменты>Редактор сценариев
- Создайте файл .gs и введите код ниже (Ссылка на соответствующий лист
- В редакторе сценариев> Правка> Триггеры текущего проекта> Назовите свой проект
- В редакторе сценариев> Изменить> Триггеры текущего проекта> Нажмите на модальную ссылку «Триггеры не настроены. Нажмите здесь, чтобы добавить один сейчас»> Установите свой временной триггер (ссылка
replaceFileColumn
в поле выбора в этом модальном)
Моя ошибка заключалась в том, что я думал, что для этого мне нужно использовать настраиваемую функцию в каждой ячейке (я до сих пор не до конца понимаю причины, почему это не сработает, так что если кто-то может объяснить это непрофессионалам)термины, которые были бы невероятны; мое решение - просто обходной путь ради целесообразности).
В моей таблице есть триггер, управляемый временем , вызывающий replaceFileColumn()
Надеюсь, это кому-нибудь поможет!
function getMyFile(cell) {
var filename = encodeURI(cell);
var files = DriveApp.getFilesByName(cell);
while (files.hasNext()) {
var file = files.next();
if(file){
var fileValue = file.getUrl();
return(fileValue);
};
};
}
function replaceFileColumn() {
var spreadsheet = SpreadsheetApp.getActive().getSheetByName('My Sheet');
var range = spreadsheet.getRange("A2:A");
var range_update = spreadsheet.getRange("B2:B");
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
var fileName = values[i];
var getFileUrl = getMyFile(fileName);
values[i][0] = getFileUrl;
}
range_update.setValues(values);
}