Скопируйте строку и добавьте ее, сохраняя текстовый формат в скрипте Google - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть лист Google, в котором есть список деталей и серийные номера.Затем у меня есть скрипт, который берет этот список и создает новый лист, который разбивает каждый номер детали / серийный номер на собственную строку, если на первом листе несколько серийных номеров.номер первого листа серийный номер 231231 Бейсбольные виды спорта 12322, 421321, 00000321321

второй лист 231231 Бейсбольные виды спорта 12322 231231 Бейсбольные виды спорта 421321 231231 Бейсбольные виды спорта 321321

Моя проблема в том, что я копирую последнюю ячейкуиногда числа имеют начальные 0, но не всегда иногда они являются текстовыми.Все работает отлично, за исключением того, что удаляет первые 0 *

ниже код, который я использую.Я пробовал несколько вещей, но я не могу заставить его скопировать точный текст из столбца d.он всегда хочет удалить 0, и добавление указанного набора 0 не будет работать, потому что не все имеют одинаковое количество, а некоторые - нет.

    //@@@@@@@@@@@@@@@@@@@@@@@ Print Avery Labels @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  function createAveryLabelsSheet() {
   Logger.clear()
  // source spreadsheets
  var sourceSpreadSheet = SpreadsheetApp.getActive();
  var ss = sourceSpreadSheet.getSheetByName('On Hands Stock'); 
 //destination spreadsheet
 var destinationSpreadSheet = sourceSpreadSheet.getSheetByName('Avery Labels');
//  destinationSpreadSheet.appendRow(['Item #','Description','Type','Serial #','Print']);
  var startRow=2; // First row of data to process
  var numRows = 350; // Number of rows to process
  var startColumn = 1;  // A=1 B=2
  var numColumns = 9;  // Number of columns to process

//    destinationSpreadSheet.setRowHeights(2, 300, 100);


var dataRange = ss.getRange(startRow, startColumn, numRows, numColumns);

  var data = dataRange.getValues();
  for (var i = 1; i < data.length; ++i) {
    var column = data[i]; 
    if(column[0] != ""){
    var itemnum = column[0]; // a column
    var desc = column[1]; // b column
  var type = column[4]; // b column  
    var serial = column[3]; // b column 
    var serialnum = serial.split(", ");
var print = 'False';


      for (var j = 0; j < serialnum.length; ++j) {

        if(serial != ""){  

          var cell = sourceSpreadSheet.getSheetByName('Avery Labels').getRange('E'+i);
addCheckbox(cell);

  //        var setcellformat = sourceSpreadSheet.getSheetByName('Avery Labels').getRange('A'+i);
   //      setcellformat.setFontWeight("bold").setHorizontalAlignment("center").setWrap(false).setFontFamily('Arial').setFontSize('10').setNumberFormat("@");   

          destinationSpreadSheet.appendRow([itemnum,desc,type,serialnum[j],]);

  }else{
    var cell =  sourceSpreadSheet.getSheetByName('Avery Labels').getRange('E'+i);
addCheckbox(cell);

    destinationSpreadSheet.appendRow([itemnum,desc,type,]);
  }
}

  }
  } 
formatAverySheets();
  }

                                      function addCheckbox(cell) {  
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  cell.setDataValidation(rule);
}


function formatAverySheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName('Avery Labels');
   var end =sheet.getLastRow();
  var cell = sheet.getRange('a2:'+end);
  //cell.sort(3);

 cell.setFontWeight("bold").setHorizontalAlignment("center").setWrap(false).setFontFamily('Arial').setFontSize('10');

 var serialcell = sheet.getRange('d2:'+end);
// serialcell.setFontWeight("bold").setHorizontalAlignment("center").setWrap(false).setFontFamily('Arial').setFontSize('10').setNumberFormat('@');

 var lastcolumn =sheet.getLastColumn();
 sheet.autoResizeColumns(1, lastcolumn);

  SpreadsheetApp.flush();


  AverySheeFinished();

                                      }

1 Ответ

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

Это не самый чистый код, я уверен, но я обнаружил, что это работает сейчас.Я добавил getLastRow, а затем фрагмент кода, который форматируется в простой текст перед его вводом.

//@@@@@@@@@@@@@@@@@@@@@@@ Print Avery Labels @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  function createAveryLabelsSheet() {

  // source spreadsheets
  var sourceSpreadSheet = SpreadsheetApp.getActive();
  var ss = sourceSpreadSheet.getSheetByName('On Hands Stock'); 
 //destination spreadsheet
 var destinationSpreadSheet = sourceSpreadSheet.getSheetByName('Avery Labels');
// destinationSpreadSheet.appendRow(['Item #','Description','Type','Serial #','Print']);
  var startRow=2; // First row of data to process
  var numRows = 350; // Number of rows to process
  var startColumn = 1;  // A=1 B=2
  var numColumns = 9;  // Number of columns to process

//    destinationSpreadSheet.setRowHeights(2, 300, 100);


var dataRange = ss.getRange(startRow, startColumn, numRows, numColumns);

  var data = dataRange.getValues();
  for (var i = 1; i < data.length; ++i) {
    var column = data[i]; 
    if(column[0] != ""){
    var itemnum = column[0]; // a column
    var desc = column[1]; // b column
    var type = column[4]; // b column  
    var serial = column[3]; // b column 
    var serialnum = serial.split(", ");
   var print = 'False';


   for (var j = 0; j < serialnum.length; ++j) {
 if(serial != ""){     
     destinationSpreadSheet.appendRow([itemnum,desc,type]);
   var lastrow=destinationSpreadSheet.getLastRow();
  destinationSpreadSheet.getRange('d'+lastrow).setNumberFormat('@').setValue(serialnum[+j]);         

 var cell = sourceSpreadSheet.getSheetByName('Avery Labels').getRange('E'+i);

   addCheckbox(cell);
      }else{

  var cell =  sourceSpreadSheet.getSheetByName('Avery Labels').getRange('E'+i);
  addCheckbox(cell);
  destinationSpreadSheet.appendRow([itemnum,desc,type,]);
   }
       }
    }
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...