остановите числа в столбце для перехода к научной нотации при переходе в сценарии - PullRequest
0 голосов
/ 06 марта 2019

У меня есть скрипт листов Google, который автоматически форматирует электронную таблицу.Проблема, с которой я сталкиваюсь, заключается в том, что, когда я перемещаю столбец, числа в этом столбце изменяются на научные обозначения.Как я могу предотвратить это?Я попытался установить тип данных столбца в виде строки и числа, но ни один из них не работает.После перемещения столбца значения возвращаются в научной нотации.

Вот мой код ниже:

//Set CC number as string data type
  var ccType = sheet.getRange("K2:K");
  ccType.setNumberFormat("@");

//Move the credit card and last 4 of CC columns next to the name column
  var columnsCC = sheet.getRange("K1:L1");
  sheet.moveColumns(columnsCC, 6);

1 Ответ

0 голосов
/ 15 марта 2019

Создание 20 - 16-значных чисел.Отформатируйте их.Затем переместите столбец

. Я никогда раньше не использовал команду sheet.moveColumn ().Я нашел это довольно интересным.В любом случае, эта функция генерирует всего 20 16-значных чисел в A1: A20 и перемещает их в столбец F. Интересно, что они заканчиваются в столбце E, поскольку также удаляет столбец A.Я использовал функцию generateString (), которую я написал ранее, для генерации шестнадцатизначных чисел.

function formatThenMove() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(1,1,20,1);//A1:A20
  var vA=rg.getValues();
  var fA=rg.getNumberFormats();
  for(var i=0;i<vA.length;i++) {
    vA[i][0]=generateString();//setup for 16 digits
    fA[i][0]="@";//here's the format for raw text
  }
  rg.setValues(vA);//set values
  rg.setNumberFormats(fA);//set formats
  sh.moveColumns(rg, 6);//move to column F
}

function generateString(sObj){
  var sObj=sObj || {uppercase:false,lowercase:false,numbers:true,allothers:false,custom:false,custxt:'',slctlen:16};//defaults to 16 digit number
  var upperCase='ABCDEFGHIJKLMNOPQRSTUVWXYZ';//26
  var lowerCase='abcdefghijklmnopqrstuvwxyz';//26
  var numBers='0123456789';//10
  var allOthers='~@#$%^&*()_-+={[}]|\:;"<,>.?/';//29
  var s='';
  var o='';
  s+=(sObj.uppercase)?upperCase:'';
  s+=(sObj.lowercase)?lowerCase:'';
  s+=(sObj.numbers)?numBers:'';
  s+=(sObj.allothers)?allOthers:'';
  s+=(sObj.custom)?sObj.custxt:'';
  for(var i=0;i<sObj.slctlen;i++){
    o+=s.charAt(Math.floor(Math.random()*s.length));
  }
  Logger.log(o);
  return o;
}

Я не вижу поведения, о котором вы упоминаете, когда формат меняется на научную нотацию.Таким образом, вы не достигли минимального полного проверяемого примера.

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