У меня есть скрипт Google, который создает QR-коды и штрих-код. QR-коды появляются дважды. Один раз, где его положено, а затем в конце документа - PullRequest
1 голос
/ 02 марта 2020

Приведенный ниже код генерирует этикетку с QR-кодом и штрих-кодом. В настоящее время я пытаюсь заставить обоих работать. Они оба отображаются в метке, но когда это произойдет, QR-код будет добавлен в правильном месте, но также добавит дополнительные qr-коды в последнюю сгенерированную метку. Два qr-кода в конце являются qr-кодами itemnum, и их не должно быть. Обычно это ставит их друг на друга, я их перемещаю, чтобы люди могли видеть. Штрих-коды генерируются просто отлично, но они не сканируют

ТЕСТОВЫЙ СКРИПТ вот ссылка для его проверки. Это тестовый скрипт, а не часть бизнеса, поэтому его легко сделать , В основном, что нужно сделать, это нажать на Мое пользовательское меню и выбрать метки сброса. После создания ярлыков вы можете go перейти на вкладку ярлыков и выбрать несколько ярлыков с серийными номерами, затем go вернуться в меню и выбрать создание ярлыков для выбранных элементов.

enter image description here

// ########################### ############ Создать метку зебры #########################

function createZebraLabel(monthlySheet, newSheetName) {

    var parentFolder = DriveApp.getFolderById('1mUPLw1PSi-guH19uJPCPWmogkpdckLcW');
    var createdoc = DocumentApp.create('Zebra Label').getId();
    doc = DocumentApp.openById(createdoc);

    var id = createdoc;
    var docFile = DriveApp.getFileById(doc.getId());

    var target = parentFolder;
    var file1 = DriveApp.getFileById(id);
    var mkfile1 = file1.makeCopy(newSheetName, target).getId();
    doc = DocumentApp.openById(mkfile1);
    docFile.setTrashed(true);
    //325
    var body = doc.getBody().setPageWidth(325).setPageHeight(180).setMarginTop(.2).setMarginBottom(.2);
    //  var body = doc.getBody().setPageWidth(144).setPageHeight(144).setMarginTop(.2).setMarginBottom(.2);


    var sourceSpreadSheet = SpreadsheetApp.openById(monthlySheet);
    var ss = sourceSpreadSheet.getSheetByName('Sheet1');

    var startRow = 1; // First row of data to process
    var numRows = 250; // Number of rows to process
    var startColumn = 1;  // A=1 B=2
    var numColumns = 5;  // Number of columns to process
    var dataRange = ss.getRange(startRow, startColumn, numRows, numColumns);
    var data = dataRange.getValues();
    for (var i = 1; i < data.length; ++i) {
        var row = data[i];
        var actualrow = i;

        var itemnum = row[0]; // A column
        var desc = row[1]; // B column
        var serial = row[2]; // D column
        var bin = row[3]; // D column
        var qty = row[4];


        var styleLeft = {};
        styleLeft[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
        styleLeft[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
        styleLeft[DocumentApp.Attribute.FONT_SIZE] = 14;
        styleLeft[DocumentApp.Attribute.BOLD] = true;

        var styleRight = {};
        styleRight[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
        styleRight[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
        styleRight[DocumentApp.Attribute.FONT_SIZE] = 14;
        styleRight[DocumentApp.Attribute.BOLD] = true;


        var itemBarcode = {};
        itemBarcode[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
        itemBarcode[DocumentApp.Attribute.FONT_FAMILY] = 'Libre Barcode 39 Extended Text';
        itemBarcode[DocumentApp.Attribute.FONT_SIZE] = 25;
        itemBarcode[DocumentApp.Attribute.BOLD] = false;

        var serialBarcode = {};
        serialBarcode[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
        serialBarcode[DocumentApp.Attribute.FONT_FAMILY] = 'Libre Barcode 39 Extended Text';
        serialBarcode[DocumentApp.Attribute.FONT_SIZE] = 20;
        serialBarcode[DocumentApp.Attribute.BOLD] = false;

        var nospace = {};
        nospace[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
        nospace[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
        nospace[DocumentApp.Attribute.FONT_SIZE] = 1;
        nospace[DocumentApp.Attribute.BOLD] = true;
        var text = body.editAsText();


        var itemqrcode = UrlFetchApp.fetch('https://chart.googleapis.com/chart?chs=70x70&cht=qr&chl=' + itemnum);
        var serialqrcode = UrlFetchApp.fetch('https://chart.googleapis.com/chart?chs=70x70&cht=qr&chl=' + serial);
        if (itemnum != '') {
            //####################   SERIAL  ###################     
            if (serial != '') {  // SERIAL NUMBER


                body.appendParagraph('').setAttributes(nospace);
                var paragraph = body.appendParagraph('Item Number: ' + itemnum).setAttributes(styleLeft);
                paragraph.addPositionedImage(itemqrcode.getBlob()).setLayout(DocumentApp.PositionedLayout.WRAP_TEXT)
                body.appendParagraph('*' + itemnum + '*').setAttributes(itemBarcode);
                body.appendParagraph('\n\n').setAttributes(nospace).appendHorizontalRule();

                //description
                body.appendParagraph(desc).setAttributes(styleLeft);
                body.appendParagraph('').setAttributes(nospace);

                //serials
                body.appendParagraph('').setAttributes(nospace).appendHorizontalRule();

                var paragraph = body.appendParagraph('Serial Number:  ' + serial).setAttributes(styleRight);
                body.appendParagraph('*' + serial + '*').setAttributes(serialBarcode);
                paragraph.addPositionedImage(serialqrcode.getBlob()).setLayout(DocumentApp.PositionedLayout.WRAP_TEXT)

                body.appendParagraph('').setAttributes(nospace);



            } else if (serial == '') { // NO SERIAL NUMBER
                var styleCenter = {};
                styleCenter[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
                styleCenter[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
                styleCenter[DocumentApp.Attribute.FONT_SIZE] = 18;
                styleCenter[DocumentApp.Attribute.BOLD] = true;

                var itemBarcode = {};
                itemBarcode[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER;
                itemBarcode[DocumentApp.Attribute.FONT_FAMILY] = 'Libre Barcode 39 Extended Text';
                itemBarcode[DocumentApp.Attribute.FONT_SIZE] = 35;
                itemBarcode[DocumentApp.Attribute.BOLD] = false;

                var styleLocation = {};
                styleLocation[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
                styleLocation[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
                styleLocation[DocumentApp.Attribute.FONT_SIZE] = 12;
                styleLocation[DocumentApp.Attribute.BOLD] = true;

                body.appendParagraph('').setAttributes(nospace);
                var paragraph = body.appendParagraph('Item Number: ' + itemnum).setAttributes(styleLeft);
                body.appendParagraph('*' + itemnum + '*').setAttributes(itemBarcode);
                body.appendParagraph('\n').setAttributes(nospace).appendHorizontalRule();


                //description
                body.appendParagraph(desc).setAttributes(styleLeft);
                body.appendParagraph('').setAttributes(nospace).appendHorizontalRule();
                body.appendParagraph('Location: ' + bin + '        Qty: ' + qty).setAttributes(styleLocation);
                body.appendParagraph('\n').setAttributes(nospace);
            }
            body.appendPageBreak();


        }
    }


    var googledoc = doc.getUrl();
    FinishedGoogleDoc(googledoc);
}

Ниже мое решение, которое работает.

/

/#######################################     Create Zebra Label #########################

function createZebraLabel(monthlySheet,newSheetName){

var parentFolder=DriveApp.getFolderById('1mUPLw1PSi-guH19uJPCPWmogkpdckLcW');
var createdoc = DocumentApp.create('Zebra Label').getId();
doc = DocumentApp.openById(createdoc);

var id = createdoc;
var docFile = DriveApp.getFileById(doc.getId());

var target = parentFolder;
var file1 = DriveApp.getFileById(id);
var mkfile1 = file1.makeCopy(newSheetName, target).getId();
doc = DocumentApp.openById(mkfile1);
docFile.setTrashed(true);
//325
var body = doc.getBody().setPageWidth(325).setPageHeight(180).setMarginTop(.02).setMarginBottom(.02);
//  var body = doc.getBody().setPageWidth(144).setPageHeight(200).setMarginTop(.01).setMarginBottom(.01);


  var sourceSpreadSheet = SpreadsheetApp.openById(monthlySheet);
  var ss = sourceSpreadSheet.getSheetByName('Sheet1'); 

  var startRow = 1; // First row of data to process
  var numRows = 250; // Number of rows to process
  var startColumn = 1;  // A=1 B=2
  var numColumns = 5;  // Number of columns to process
  var dataRange = ss.getRange(startRow, startColumn, numRows, numColumns);
  var data = dataRange.getValues();
  for (var i = 1; i < data.length; ++i) {
    var row = data[i];
    var actualrow=i;

    var itemnum = row[0]; // A column
    var desc = row[1]; // B column
    var serial = row[2]; // D column
    var bin = row[3]; // D column
    var qty =row[4];

 if (itemnum != ''){  

    var styleITEMNUM = {};
styleITEMNUM[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;   
styleITEMNUM[DocumentApp.Attribute.VERTICAL_ALIGNMENT] =DocumentApp.VerticalAlignment.CENTER;
styleITEMNUM[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
styleITEMNUM[DocumentApp.Attribute.FONT_SIZE] = 14;
styleITEMNUM[DocumentApp.Attribute.BOLD] = true;

     var styleDESC = {};
styleDESC[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
styleDESC[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
styleDESC[DocumentApp.Attribute.FONT_SIZE] = 10;
styleDESC[DocumentApp.Attribute.BOLD] = true;


        var styleSERIAL = {};
styleSERIAL[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
styleSERIAL[DocumentApp.Attribute.VERTICAL_ALIGNMENT] =DocumentApp.VerticalAlignment.CENTER;
styleSERIAL[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
styleSERIAL[DocumentApp.Attribute.FONT_SIZE] = 12;
styleSERIAL[DocumentApp.Attribute.BOLD] = true;

      var nospace = {};
nospace[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
nospace[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
nospace[DocumentApp.Attribute.FONT_SIZE] =-1;
nospace[DocumentApp.Attribute.BOLD] = true;
     var text = body.editAsText();

 var paraStyle = {};
  paraStyle[DocumentApp.Attribute.PADDING_BOTTOM] = 0;
   paraStyle[DocumentApp.Attribute.PADDING_TOP] = 0;
  paraStyle[DocumentApp.Attribute.MARGIN_TOP] = 0;
  paraStyle[DocumentApp.Attribute.SPACING_BEFORE] = 0;
  paraStyle[DocumentApp.Attribute.SPACING_AFTER] = 0;
  paraStyle[DocumentApp.Attribute.LINE_SPACING] = 0;


    var itemqrcode = UrlFetchApp.fetch('https://chart.googleapis.com/chart?chs=80x80&cht=qr&chl='+itemnum);
    var serialqrcode = UrlFetchApp.fetch('https://chart.googleapis.com/chart?chs=80x80&cht=qr&chl='+serial);

//####################  ITEM WITH SERIAL NUMBER ###################     
   if (itemnum != '' && serial != ''){  // SERIAL NUMBE

body.appendParagraph('').setAttributes(nospace);      
var table = body.appendTable().setBorderWidth(0).setAttributes(paraStyle);
var tr = table.appendTableRow().setAttributes(paraStyle);
var td = tr.appendTableCell('').setWidth(80).setPaddingTop(0).setPaddingBottom(0).appendImage(itemqrcode.getBlob()).setAttributes(paraStyle);
var td = tr.appendTableCell('Item Number\n' +itemnum).setPaddingTop(0).setPaddingBottom(0).setAttributes(styleITEMNUM);

body.appendHorizontalRule().setAttributes(nospace);
body.appendParagraph(desc).setAttributes(styleDESC);
body.appendParagraph('').setAttributes(nospace).appendHorizontalRule().setAttributes(nospace);
body.appendParagraph('').setAttributes(nospace);       
var table = body.appendTable().setBorderWidth(0).setAttributes(paraStyle);
var tr = table.appendTableRow().setAttributes(paraStyle);
var td = tr.appendTableCell('').setWidth(80).setPaddingTop(0).setPaddingBottom(0).appendImage(serialqrcode.getBlob()).setHeight(80);
var td = tr.appendTableCell('Serial Number\n ' +serial).setPaddingTop(0).setPaddingBottom(0).setAttributes(styleSERIAL);

 }
 else if (itemnum != '' && serial == ''){ // NO SERIAL NUMBER

var styleLocation = {};
styleLocation[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
styleLocation[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
styleLocation[DocumentApp.Attribute.FONT_SIZE] =12;
styleLocation[DocumentApp.Attribute.BOLD] = true;

body.appendParagraph('').setAttributes(nospace);      
var table = body.appendTable().setBorderWidth(0).setAttributes(paraStyle);
var tr = table.appendTableRow().setAttributes(paraStyle);
var td = tr.appendTableCell('').setWidth(80).setPaddingTop(0).setPaddingBottom(0).appendImage(itemqrcode.getBlob()).setAttributes(paraStyle);
var td=tr.appendTableCell('Item Number\n' +itemnum).setAttributes(styleITEMNUM);
     body.appendParagraph('\n').setAttributes(nospace).appendHorizontalRule();
body.appendParagraph(desc).setAttributes(styleDESC);
body.appendParagraph('\n').setAttributes(nospace).appendHorizontalRule();
body.appendParagraph('').setAttributes(nospace);      

var table = body.appendTable().setBorderWidth(0).setAttributes(paraStyle);
var tr = table.appendTableRow().setAttributes(paraStyle);
var td=tr.appendTableCell('Location:'+bin).setWidth(200).setPaddingTop(0).setPaddingBottom(0).setAttributes(styleLocation);
var td=tr.appendTableCell('Qty: ' +qty).setAttributes(styleLocation);

    }
      body.appendPageBreak();

   }
  }    

 var googledoc = doc.getUrl();
 FinishedGoogleDoc(googledoc);


  }
...