Необходимо перевести одно значение в другое значение из списка - PullRequest
0 голосов
/ 19 октября 2018

Полное раскрытие - не программист ... Я только что неплохо поработал с Excel и Google Sheets, и застрял, пытаясь найти простой способ преобразования определенного набора данных.По сути, у нас есть веб-узел, который предоставляет нам возможность осуществлять экспорт результатов различных заполняемых форм.Одним из них является регистрация на видео для электронного обучения.Результаты формы предоставляют конкретный URL для каждого из примерно 20 видео, которые мы поддерживаем ... но ни URL, ни что-либо в самой форме автоматически не указывают на удобочитаемый ярлык (например, «Введение в приложение»), который полезен, если кто-то хочетиспользовать отслеживание экспорта, что клиент просмотрел, какое конкретное видео.Таким образом, для каждого экспорта данных, который я делаю, мне нужно найти способ запуска макроса или сценария, который будет проходить через один столбец данных, сопоставить его с ключом, который включает в себя каждый URL-адрес, специфичный для видео, и затем выплюнутьудобочитаемое имя для каждого видео во втором столбце.

Итак, мне нужен скрипт, который говорит, если A1: A100 = a, b, c, d, e, f, g ("a,b, c, d, e, f, g "является любой записью из списка или URL-адресов", затем установите B1: B100 = a *, b *, c *, d *, e *, f *, g * ("a *, b *, c *, d *, e *, f *, g * "(имя пользователя для каждого видео, представленное URL-адресами).

Есть мысли по этому поводу?Я думаю, что у меня есть способ сделать это в формуле во всех ячейках столбца B, но я бы сослался на столько длинных URL-адресов в этой единственной формуле, что кажется абсурдным не обрабатывать это с помощью сценария.Я просто тупик, когда дело доходит до сценариев ...

1 Ответ

0 голосов
/ 06 ноября 2018

Спрашивающий, по сути, ищет способ сопоставить значимое название фильма с бессмысленным (но последовательным) URL-адресом, предоставленным веб-службой.Спрашивающий говорит, что у них есть 100 наименований, хотя у нас нет сведений об объеме транзакций.В этих условиях и без знания дополнительных томов наиболее эффективным вариантом является линейный поиск.

Я создал электронную таблицу с двумя листами:
1 - Заголовки: Содержит списокURL поставщика и связанное с ним значимое «Название».Это лист, который будет поддерживаться спрашивающим при добавлении или удалении заголовков.
2 - Трансданные: Содержит некоторые данные;включает в себя URL-адрес поставщика и столбец для значимого имени заголовка.

В сценарии используется вложенный цикл.Первый уровень проходит через каждый ряд данных транзакции.Второй вложенный цикл оценивает URL для каждой строки транзакции и возвращает заголовок, который сохраняется на листе в столбце «MovieName».

Чтобы упростить обработку функции, я добавилфункция OnOpen, чтобы спрашивающий мог получить доступ к главному меню, чтобы определить, когда они обрабатывают.


function so_52892546() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var Titles = ss.getSheetByName("Titles");
    var Titlesrange = Titles.getDataRange();
    var Titlesvalues = Titlesrange.getValues();
    var TitleslastRow = Titles.getLastRow();

    var Trans = ss.getSheetByName("TransData");
    var Transrange = Trans.getDataRange();
    var Transvalues = Transrange.getValues();
    var TranslastRow = Trans.getLastRow();

    for (var i = 1; i < TranslastRow; i++) {
        for (var z = 1; z < TitleslastRow; z++) {
            if (Transvalues[i][0] == Titlesvalues[z][0]) {
                var Title = Titlesvalues[z][1];
                //Logger.log("match i = "+1);
            }
        }
        //Logger.log("i="+i+". Title: "+MovieTitle+", date = "+Transdata[i][1]+", income"+Moviesdata[i][2]);
        var targetrange = Trans.getRange(i + 1, 4);
        targetrange.setValue(Title);
    }
}

function onOpen() {
    var spreadsheet = SpreadsheetApp.getActive();
    var menuItems = [{
        name: 'Update Movie names',
        functionName: 'so_52892546'
    }, ];
    spreadsheet.addMenu('Update Movies', menuItems);

Снимок экрана листа заголовков Titles sheet


Снимки экрана «До» и «После» листа Transdata,Transdata - Before

Transdata - After

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