首页 > 解决方案 > 复制行并附加它,保持谷歌脚本中的文本格式

问题描述

我有一个包含零件和序列号列表的谷歌表。然后我有一个脚本,它获取该列表并创建一个新表,如果第一张表中有多个序列号,则将每个部件号/序列号分成自己的行。第一张表项目 # 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();

                                      }

标签: google-apps-scriptgoogle-sheets

解决方案


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

推荐阅读