Функция для перемещения данных без замедления кода - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть код, так что когда я нажимаю checkbox, код найдет первую пустую строку и поместит туда данные, см .:

function onEdit(e) {
    const INPUT_ROW_INDEX = 6;
    if (INPUT_ROW_INDEX === 6) {
        const range = e.range;
        const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); `enter code here`

        const rowIndex = range.getRow();
        const columnIndex = range.getColumn();
        const value = range.getValue();

        if (value === true) {
            const startColumnName = columnToLetter(columnIndex - 6);
            const endColumnName = columnToLetter(columnIndex - 1);
            const firstFreeColumnName = columnToLetter(columnIndex - 2);

            const firstFreeRowIndex = getFirstEmptyRowByCell(firstFreeColumnName, INPUT_ROW_INDEX + 1, spreadSheet);

            const copyRange = spreadSheet.getRange(startColumnName + rowIndex + ":" + endColumnName + rowIndex);
            const deleteRange = spreadSheet.getRange(startColumnName + rowIndex + ":" + firstFreeColumnName + rowIndex);

            copyRange.copyTo(spreadSheet.getRange(startColumnName + firstFreeRowIndex + ":" + endColumnName + firstFreeRowIndex), {
                contentsOnly: true
            });
            deleteRange.clear();
            range.setValue(false);
        }
    }
}

function columnToLetter(column){
    var temp, letter = '';
    while (column > 0) {
        temp = (column - 1) % 26;
        letter = String.fromCharCode(temp + 65) + letter;
        column = (column - temp - 1) / 26;
    }
    return letter;
}


function getFirstEmptyRowByCell(firstFreeColumnName, startIndex, spreadSheet) {

    var range = spreadSheet.getRange(
        firstFreeColumnName + ':' + firstFreeColumnName);
    for (var i = startIndex; i <= range.getLastRow(); i++){
        if (!range.getCell(i, 1).getValue()) {

            break;

        }
    }
    return i;
}

У меня вопрос: есть ли какая-то функция или трюк, чтобы при нажатии на checkbox данные перемещались прямо под строкой флажка, а строка под checkbox всегда была пустой, и я могу повторить это сколько раз я хочу.

Спасибо за любой совет.

Ян

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