Я новичок в Google Apps Script / Javascript и занимаюсь второй итерацией моего исходного кода, чтобы сделать его быстрее. В моем первом коде было много операций получения и установки базового Google Sheet, а сейчас я пытаюсь сделать все в массивах, прежде чем устанавливать пересмотренные значения. Текущий блок кода, на котором я застрял, - это моя попытка запустить indexOf при запуске функции карты.
Следующий скрипт собирается выполнить каждую строку массива, заполненного данными расписания, и внести различные поправки. к столбцам и вычислите новые значения столбцов.
var = amendedTimesheetData = timesheetdata.map(function(item){
item.splice(2, 0, item[0] + " " + item[1]);
item.splice(4, 0, item[0].slice(0, 2) + item[1].slice(0, 2) + date(item[3]));
item.splice(0, 2);
item.splice(3, 0, "Open");
item.splice(4, 0, accountingCode); //SEE ISSUE BELOW
return item
})
}
Переменная учетного кода зависит от выполнения версии vlookup Javascript на основе значения в одном из столбцов массива. Найденное значение существует в другом массиве , извлеченном из другой вкладки на листе. Я знаю, что код для выполнения поиска выглядит следующим образом:
var timeTrackingCode = item[6]; //this is the location in the mapped array of the value to be looked up
var timeTrackingCodeRow = codeMappingData.map(function(r){ return r[0]; }).indexOf(timeTrackingCode);
var accountingCode = codeMappingData[timeTrackingCodeRow][1]
Формула в приведенном выше коде основана на переменной codeMappingData , которая была сделана ранее в родительской функции перед функцией map запустился.
var codeMappingSheet = ss.getSheetByName('CodeMapping');
var codeMappingRange = codeMappingSheet.getDataRange();
var codeMappingData = codeMappingRange.getValues();
Вопрос: Как мне ссылаться на массив codeMappingData , тогда как в функция карты?
Другие варианты получения вокруг этого можно было бы запустить For l oop отдельно от карты, но, пытаясь изучить все возможности, я застрял, пытаясь понять, как я могу передать переменную и выполнить все манипуляции с колонками всего за несколько секунд. код как можно. Любые рекомендации о том, как я могу добиться прохождения переменной, или советы о том, как код может быть более эффективным, будут очень полезны. Я только скопировал немного кода, поэтому он может не иметь контекста, но я думаю, что вопрос ясен.
Обратите внимание, что я предположил, что было бы неуместно устанавливать sh Переменная codeMappingData внутри функции Map, потому что тогда каждый раз, когда она выполняет итерацию по строке, она будет выполнять извлечение из листа? Если я ошибаюсь, предполагая это, то, возможно, самый простой подход - установить sh переменную на карте.
Спасибо,