复制行并将其附加到Google脚本中以保持文本格式

时间:2019-02-28 13:53:04

标签: google-apps-script google-sheets

我有一个Google表格,其中列出了零件和序列号。然后,我有一个脚本来接收该列表,并创建一个新的工作表,如果第一工作表中有多个序列号,则将每个零件号/序列号分成自己的一行。 第一张 项目#Desc类型序列号 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 :(得分:0)

我确定它不是最干净的代码,但是我发现现在可以使用了。我添加了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,]);
   }
       }
    }
  } 
}