Google Script за строкой, скрипт работает только на 1 столбце. Если вы редактируете столбец, то он меняет 2 столбца - PullRequest
0 голосов
/ 07 ноября 2018

Сценарий работает, когда вы изменяете 1-й и 2-й столбцы, когда вы редактируете каждую ячейку самостоятельно. Но когда ты мимо проходишь в нем. Это только изменить 1-й столбец

function onEdit(e) {

  var range = e.range;
  var column = range.getColumn();
  var value = range.getValue();
  var sheet = range.getSheet();
  var sheetName = sheet.getName();



  //Logger.log(value);
  //Logger.log(Date(value).getMonth());

 Logger.log(range.getColumn());

  switch (sheetName)  {
        case "sheetnameeee":
                  if(column == 1||column == 2)
                  {

                    range.getCell(1, 1).setValue(dateChange(value)).setNumberFormat("yyyy-MM-dd");

                    range.getCell(1, 2).setValue(dateChange(value)).setNumberFormat("yyyy-MM-dd");
                  };
            break;

    }

Ввод:

Start date   |  Eind date
okt 15, 2018 |  okt 21, 2018

Копия и прошлое:

Start date   |  Eind date
2018-10-15   |  okt 21, 2018

Но это нужно сделать:

Start date   |  Eind date
2018-10-15   |  2018-10-21

Это моё решение. Это не здорово, но работает ..

  switch (sheetName)  {
      case "Sheetnameeeee":

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var test222 = ss.getSheetName();
      var startRow = 1
      var rowRange = ss.getRange("A:B");
      var rowLength = getRange.getLastRow();
      var RangeValues = getRange.getValues();

      for (var i=startRow; i < rowLength; i++) {

                if(typeof RangeValues[i][0] === 'string')
                { 
                  RangeValues[i][0] = dateChange(RangeValues[i][0]);
                };
                if(typeof RangeValues[i][1] === 'string')
                {
                  RangeValues[i][1] = dateChange(RangeValues[i][1]);
                };        

      }
      rowRange.setValues(RangeValues);
      rowRange.setNumberFormats([["yyyy-MM-dd","yyyy-MM-dd"]]);

1 Ответ

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

Я не уверен в вашей логике. Похоже, что getCell (1,1) и getCell (1,2) будут иметь одно и то же значение. Тем не менее, это может работать для вас с некоторыми незначительными изменениями имени, при условии, что dateChange возвращает Date.

function onEdit(e) {
  try {
    if( e.range.getSheet().getName() === "Sheet4" ) {
      var range = null;
      if( e.range.getColumn() === 1 ) {
        range = e.range.offset(0,0,1,2);
      }
      else if( e.range.getColumn() === 2 ) {
        range = e.range.offset(0,-1,1,2);
      }
      var values = range.getValues();
      values[0][0] = dateChange(values[0][0]);
      values[0][1] = dateChange(values[0][1]);
      range.setValues(values);
      range.setNumberFormats([["yyyy-MM-dd","yyyy-MM-dd"]]);
    }
  }
  catch(err) {
    Logger.log(err);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...