我有一个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();
}
答案 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,]);
}
}
}
}
}