Найти следующую свободную строку в зависимости от A в Google Script - PullRequest
1 голос
/ 08 октября 2019

У меня есть следующий вопрос для листов Google,

Я использую этот скрипт:

function copy(){


  var quelleTabellenName="Sheet1";

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(quelleTabellenName);
  var row = sheet.getActiveCell().getRow();
  var zielTabellenName="Sheet2";
  var zielTabelle=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(zielTabellenName);
  var letzteZeileVonZielTabelle=zielTabelle.getLastRow();
    zielTabelle.getRange((letzteZeileVonZielTabelle+1),1,1,11).setValues(sheet.getRange(row,1,1,11).getValues());
}

Он копирует первые 11 ячеек отмеченного необработанного текста из Листа1 в следующее бесплатное необработанное вSheet2, это хорошо работает.

Теперь мои 2 вопроса: 1) Мне не нравится отмечать каждый раз, когда нужно сырье, оно всегда одно и то же, в этом случае raw nr. 4, возможно ли изменить активное сырье, чтобы исправить сырье 4, горячее, чтобы сделать это?

2) этот скрипт переписывает только столбцы 1-11 в Sheet2, он работает хорошо, если столбец 12 и более пустые,Я хотел бы сделать бесконечную формулу в столбце 13, которая суммирует другие столбцы, я хотел бы скопировать вставить формулу в raw 999, но затем он добавляет новый raw в raw nr. 1000. Можно ли изменить сценарий, чтобы он только искал следующее бесплатное сырье в столбце А и взял следующее бесплатное? например, есть 20 заполненных необработанных строк, с данными в столбце 1-12 (AL), в строках 21+ только столбец L заполняется формулой, поэтому сценарий должен определить необработанный 21 как следующий свободный необработанный и добавить столбцы1-11 (AK) в этом сырье, но не меняют L21, это возможно? Теперь он пишет данные в сыром виде 1000 +

Спасибо, извините за мой плохой английский

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Замените эту строку

var letzteZeileVonZielTabelle=zielTabelle.getLastRow();

на

var letzteZeileVonZielTabelle= findFirstFreeRow(zielTabelle, 4)

и добавьте эту функцию в свой проект:

function findFirstFreeRow(sheet, colNum) {
var v = sheet.getRange(1, colNum, sheet.getLastRow()).getValues(),
    l = v.length,
    r;
while (l > 0) {
    if (v[l] && v[l][0].toString().length > 0) {
        r = (l + 2);
        break;
    } else {
        l--;
    }
}
return r;
}

Если вы добавите Logger.log (zielTabelle) вы должны увидеть номер строки в zielTabelle, которая содержит первую свободную ячейку (после всех данных) в столбце 4. Конечно, вы можете использовать любой подходящий для вас номер столбца.

Надеюсь, это поможет?

0 голосов
/ 08 октября 2019

В Sheet2 у меня есть 10 заполненных строк с данными в столбцах AL. Столбцы АК заполняются скриптом, в столбце L у меня есть формула: = D * + E *. Этот скрипт копирует активную строку из Sheet1 и вставляет первые 11 столбцов в первый свободный raw в Sheet2. Если в Sheet2 больше нет данных (в столбце L), это работает. Если у меня есть 10 заполненных строк в Sheet2, он заполнит первые 11 столбцов необработанных 11. Если у меня в raw 11 в L11 формула = D11 + E11, он думает, что raw 11 заполнен и скопирует 11 ячеек в raw 12,я хочу, чтобы он искал только данные в столбце A, поэтому он распознал бы, что A11 пуст, и скопировал данные в A11: K11, даже если L11 не пуст.

Я надеюсь, что смогу объяснить, что

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