Вставьте строку ниже на основе значения столбца с помощью скриптов Google - PullRequest
0 голосов
/ 07 февраля 2020

Я застрял с этим. Поначалу кажется легким, потом я заблудился!

На что я нацеливаюсь:

  • для вставки строки (строк) на основе значения в ячейке (Col C) - вставка строки (строк) ниже
  • после вставки новой строки (строк) скопируйте данные из предыдущей строки + строковое значение из предыдущей строки, удалив это значение также из предыдущей строки.

enter image description here

Я пытаюсь использовать эту формулу, но я заблудился ...

function addRows(){
  var ss = SpreadsheetApp.getActive();
  var sheet1 = ss.getSheets()[1];
  var dataRange = sheet1.getDataRange();
  var dataValues = dataRange.getValues();

  for (var i = 0; i<dataValues.length; i++) {
    for (var j= 0; j<dataValues.length; i++) {
      /* If blank or 0 - zero, skip */
      if (dataValues[i][3] == "" || dataValues[i][3]== 0) {continue;}
      /* If value is >=1, insert new row(s) below the active row */
      if (dataValues[i][3] >=1) { 
      sheet1.insertRowAfter(i);
      sheet1.getRange(...) // copy the data from previous + string  
      }
    }
  }
}

1 Ответ

1 голос
/ 07 февраля 2020
  • В вашей общей электронной таблице вы хотите преобразовать значения «A2: B3» в значения «A6: B11».
  • В своем общем изображении вы хотите достичь следующим образом.

    • С

      Data1   A0HD, B0DP
      Data2   C12X, D0B1, E2C1, F6H1
      
    • К

      Data1   A0HD
      Data1   B0DP
      Data2   C12X
      Data2   D0B1
      Data2   E2C1
      Data2   F6H1
      
  • Вы хотите добиться этого с помощью Google Apps Script.

Я мог понять, как выше. Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Пример сценария:

Чтобы протестировать сценарий, используйте следующий сценарий для своей общей электронной таблицы. И запустите сценарий.

function myFunction() {
  var sourceSheetName = "Sheet6";
  var destinationSheetName = "Sheet6";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sourceSheetName);

  // Retrieve source values.
  var values = sheet.getRange("A2:B3").getValues();

  // Convert values.
  var result = values.reduce(function(ar, [a, b]) {
    var temp = b.split(",");
    for (var i = 0; i < temp.length; i++) {
      ar.push([a, temp[i].trim()]);
    }
    return ar;
  }, []);

  // Put values.
  var dstSheet = ss.getSheetByName(destinationSheetName);
  dstSheet.getRange(dstSheet.getLastRow() + 1, 1, result.length, result[0].length).setValues(result);
}
  • В приведенном выше сценарии при запуске сценария извлекаются значения «A2: B3» из «Sheet6» и преобразованные значения помещаются в последняя строка «Sheet6».
  • Если на исходный лист выводятся только входные значения, вы также можете использовать var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues(); вместо var values = sheet.getRange("A2:B3").getValues();.

Примечание:

  • Это простой пример сценария. Поэтому, пожалуйста, измените это для вашей фактической электронной таблицы.

Ссылка:

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