在27.02.2018之后的奇怪的脚本脚本行为

时间:2018-03-02 10:50:41

标签: google-apps-script google-sheets

我有一个脚本用于从另一张纸上打印一张纸并通过邮件发送

这是代码:

function SendTable()
{
    var ui = SpreadsheetApp.getUi();
    var response = ui.prompt('E-mail', 'Write your E-mail', ui.ButtonSet.YES_NO);
    var tbEmail = "blahblahblah@gmail.com";
    if (response.getSelectedButton() == ui.Button.YES)
    {
      tbEmail = response.getResponseText();
      if(tbEmail == "")
      {
        tbEmail = "blahblahblah@gmail.com";
      }
    }
    var source = SpreadsheetApp.getActiveSpreadsheet();
    var row = source.getActiveRange().getRow();
    var source_range = source.getRange("A"+row+":T"+row+"");
    var dest = [];
    dest = source_range.getValues();
    var ssNew = SpreadsheetApp.create("tempCard");
    var destination = SpreadsheetApp.openById(ssNew.getId());
    if (dest.length > 0 ) 
{
    destination.getRange("B1:U1").setValues(dest);
    destination.getRange("A1:G70").setFontFamily("Times New Roman").setFontSize(10);
    var fName = destination.getRange("B1").getValue();
    destination.getRange("A1").setValue("Оценка №:");
    destination.getRange("A1:B1").setBackgroundRGB(10, 246, 55);
    dest = destination.getRange("C1:C1").getValues();
    destination.getRange("A2").setValue("Дата принятия на оценку:");
    destination.getRange("B2").setValues(dest);
    destination.getRange("B2:G2").merge();
    dest = destination.getRange("D1:D1").getValues();
    destination.getRange("A3").setValue("Наименование дисциплины:");
    destination.getRange("B3").setValues(dest);
    destination.getRange("B3:G3").merge();
    dest = destination.getRange("E1:E1").getValues();
    destination.getRange("A4").setValue("Тема работы:");
    destination.getRange("B4").setValues(dest);
    destination.getRange("B4:G4").merge();
    dest = destination.getRange("F1:F1").getValues();
    destination.getRange("A5").setValue("Требования к работе, описание задания:");
    destination.getRange("B5").setValues(dest);
    destination.getRange("B5:G12").merge().setVerticalAlignment("top");
    dest = destination.getRange("G1:G1").getValues();
    destination.getRange("A13").setValue("Тип работы:");
    destination.getRange("B13").setValues(dest);
    destination.getRange("B13:G13").merge();
    dest = destination.getRange("H1:H1").getValues();
    destination.getRange("A14").setValue("Кол-во стр. (если дисциплина гуманитарная, экономическая или опиcательная):");
    destination.getRange("B14").setValues(dest);
    destination.getRange("B14:G14").merge();
    dest = destination.getRange("I1:I1").getValues();
    destination.getRange("A15").setValue("Антиплагиат (проценты)");
    destination.getRange("B15").setValues(dest);
    destination.getRange("B15:G15").merge();
    dest = destination.getRange("J1:J1").getValues();
    destination.getRange("A16").setValue("Антиплагиат (ссылка)");
    destination.getRange("B16").setValues(dest);
    destination.getRange("B16:G16").merge();
    destination.getRange("A17").setValue("Имеется ли план работы или его нужно составлять нам?");
    destination.getRange("B17:G17").merge();
    destination.getRange("A18").setValue("В каком виде отдавать работу:");
    destination.getRange("B18:G18").merge(); 
    dest = destination.getRange("K1:K1").getValues();
    destination.getRange("A19").setValue("Преподаватель:");
    destination.getRange("B19").setValues(dest);
    destination.getRange("B19:G19").merge();
    dest = destination.getRange("L1:L1").getValues();
    destination.getRange("A20").setValue("Название учебного заведения:");
    destination.getRange("B20").setValues(dest);
    destination.getRange("B20:G20").merge();
    dest = destination.getRange("M1:M1").getValues();
    destination.getRange("A21").setValue("Форма обучения:");
    destination.getRange("B21").setValues(dest);
    destination.getRange("B21:G21").merge();
    dest = destination.getRange("N1:N1").getValues();
    destination.getRange("A22").setValue("Факультет:");
    destination.getRange("B22").setValues(dest);
    destination.getRange("B22:G22").merge();
    dest = destination.getRange("O1:O1").getValues();
    destination.getRange("A23").setValue("Специальность:");
    destination.getRange("B23").setValues(dest);
    destination.getRange("B23:G23").merge();
    dest = destination.getRange("P1:P1").getValues();
    destination.getRange("A24").setValue("Курс:");
    destination.getRange("B24").setValues(dest);
    destination.getRange("B24:G24").merge();
    dest = destination.getRange("Q1:Q1").getValues();
    destination.getRange("A25").setValue("Группа:");
    destination.getRange("B25").setValues(dest);
    destination.getRange("B25:G25").merge();
    dest = destination.getRange("R1:R1").getValues();
    destination.getRange("B1:G26").setHorizontalAlignment("center");
    destination.getRange("A26").setValue("Данные студента");
    destination.getRange("A26:G26").setBackgroundRGB(6,166, 33).merge();
    destination.getRange("A27").setValue("ФИО:");
    destination.getRange("B27").setValues(dest);
    destination.getRange("B27:G27").merge();
    dest = destination.getRange("S1:S1").getValues();
    destination.getRange("A28").setValue("Номер телефона:");
    destination.getRange("B28").setValues(dest);
    destination.getRange("B28:G28").merge();
    dest = destination.getRange("T1:T1").getValues();
    destination.getRange("A29").setValue("e-mail:");
    destination.getRange("B29").setValues(dest);
    destination.getRange("B29:G29").merge();
    dest = destination.getRange("U1:U1").getValues();
    destination.getRange("A30").setValue("vk.com:");
    destination.getRange("B30").setValues(dest);
    destination.getRange("B30:G30").merge();
    destination.getRange("B27:G30").setHorizontalAlignment("left");
    destination.getRange("C1:W1").clear();
    destination.getRange("B1:G1").merge();
    destination.getRange("A31:G31").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A32").setValue("Исполнитель");
    destination.getRange("A32:G32").setBackgroundRGB(255, 255, 0).merge();
    destination.getRange("A33").setValue("Стоимость работы для клиента:").setFontSize(12).setFontWeight("bold");
    destination.getRange("B33").setValue("0").setFontColor("red").setHorizontalAlignment("center").setFontSize(12);
    destination.getRange("B33:G33").merge();
    destination.getRange("A34").setValue("Срок выполнения работы для клиента, раб дней:").setFontSize(12).setFontWeight("bold");
    destination.getRange("B34").setValue("0").setFontColor("blue").setHorizontalAlignment("center").setFontSize(12);
    destination.getRange("B34:G34").merge();
    destination.getRange("A36").setValue("ФИО");
    destination.getRange("B36").setValue("ФИО <E-mail>");
    destination.getRange("A37").setValue("Стоимость работы");
    destination.getRange("A38").setValue("Срок выполнения исполненителя");
    destination.getRange("C38").setValue(" - дней");
    destination.getRange("B37").setValue("=D37+F37");
    destination.getRange("D37").setValue("0");
    destination.getRange("C37").setValue(" = ");
    destination.getRange("E37").setValue("+");
    destination.getRange("F37").setValue("=$B$33-D37").setFontColor("red");
    destination.getRange("A35:G35").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A39:G39").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A43:G43").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A47:G47").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A51:G51").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A55:G55").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A59:G59").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A63:G63").setBackgroundRGB(0, 0, 0).merge();
    destination.getRange("A67:G67").setBackgroundRGB(0, 0, 0).merge();
    dest = destination.getRange("A36:G38").getValues();
    destination.getRange("A40:G42").setValues(dest);
    destination.getRange("A40").setValue("ФИО");
    destination.getRange("B41").setValue("=D41+F41");
    destination.getRange("F41").setValue("=$B$33-D41").setFontColor("red");
    destination.getRange("A44:G46").setValues(dest);
    destination.getRange("B45").setValue("=D45+F45");
    destination.getRange("F45").setValue("=$B$33-D45").setFontColor("red");
    destination.getRange("A48:G50").setValues(dest);
    destination.getRange("B49").setValue("=D49+F49");
    destination.getRange("F49").setValue("=$B$33-D49").setFontColor("red");
    destination.getRange("A52:G54").setValues(dest);
    destination.getRange("B53").setValue("=D53+F53");
    destination.getRange("F53").setValue("=$B$33-D53").setFontColor("red");
    destination.getRange("A56:G58").setValues(dest);
    destination.getRange("B57").setValue("=D57+F57");
    destination.getRange("F57").setValue("=$B$33-D57").setFontColor("red");
    destination.getRange("A60:G62").setValues(dest);
    destination.getRange("B61").setValue("=D61+F61");
    destination.getRange("F61").setValue("=$B$33-D61").setFontColor("red");
    destination.getRange("A64:G66").setValues(dest);
    destination.getRange("A68:G70").setValues(dest);
    destination.getRange("B65").setValue("Не делает").setFontColor("red");
    destination.getRange("D65").setValue("");
    destination.getRange("C65").setValue("");
    destination.getRange("E65").setValue("");
    destination.getRange("F65").setValue("");
    destination.getRange("B69").setValue("Не делает").setFontColor("red");
    destination.getRange("D69").setValue("");
    destination.getRange("C69").setValue("");
    destination.getRange("E69").setValue("");
    destination.getRange("F69").setValue("");
    var sheet = destination.getSheets()[0];
    sheet.setColumnWidth(1, 250);
    sheet.setColumnWidth(2, 64);
    sheet.setColumnWidth(3, 64);
    sheet.setColumnWidth(4, 64);
    sheet.setColumnWidth(5, 64);
    sheet.setColumnWidth(6, 64);
    sheet.setColumnWidth(7, 64);
    sheet.setRowHeight(31, 5);
    sheet.setRowHeight(35, 5);
    sheet.setRowHeight(39, 5);
    sheet.setRowHeight(43, 5);
    sheet.setRowHeight(47, 5);
    sheet.setRowHeight(51, 5);
    sheet.setRowHeight(55, 5);
    sheet.setRowHeight(59, 5);
    sheet.setRowHeight(63, 5);
    sheet.setRowHeight(67, 5);
    destination.getRange("A1:B33").setBorder(true, true, true, true, true, true);  
    destination.getRange("A33:A70").setBorder(true, true, true, true, false, false); 
    destination.getRange("B33:G70").setBorder(true, true, true, true, false, false);
    destination.getRange("A32:G32").setBorder(true, true, true, true, false, false);
    var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + destination.getId() + "&exportFormat=xlsx";
    var params = 
{
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
    };
    var blob = UrlFetchApp.fetch(url, params).getBlob();
    blob.setName(fName + ".xlsx");
    MailApp.sendEmail(tbEmail, fName, "The XLSX file is attached", {attachments: [blob]});
    var targetFiles = DriveApp.getFilesByName("tempCard");
    while (targetFiles.hasNext()) 
    {
      var tfile = targetFiles.next();
      ID = tfile.getId();
      DriveApp.removeFile(tfile);
    }
  }
};

在27.02.2018之前一切正常。 似乎部分代码行没有实现 这部分:

dest = destination.getRange("A36:G38").getValues();
destination.getRange("A40:G42").setValues(dest);
destination.getRange("A40").setValue("ФИО");
destination.getRange("B41").setValue("=D41+F41");
destination.getRange("F41").setValue("=$B$33-D41").setFontColor("red");
destination.getRange("A44:G46").setValues(dest);
destination.getRange("B45").setValue("=D45+F45");
destination.getRange("F45").setValue("=$B$33-D45").setFontColor("red");
destination.getRange("A48:G50").setValues(dest);
destination.getRange("B49").setValue("=D49+F49");
destination.getRange("F49").setValue("=$B$33-D49").setFontColor("red");
destination.getRange("A52:G54").setValues(dest);
destination.getRange("B53").setValue("=D53+F53");
destination.getRange("F53").setValue("=$B$33-D53").setFontColor("red");
destination.getRange("A56:G58").setValues(dest);
destination.getRange("B57").setValue("=D57+F57");
destination.getRange("F57").setValue("=$B$33-D57").setFontColor("red");
destination.getRange("A60:G62").setValues(dest);
destination.getRange("B61").setValue("=D61+F61");
destination.getRange("F61").setValue("=$B$33-D61").setFontColor("red");
destination.getRange("A64:G66").setValues(dest);
destination.getRange("A68:G70").setValues(dest);
destination.getRange("B65").setValue("Не делает").setFontColor("red");
destination.getRange("D65").setValue("");
destination.getRange("C65").setValue("");
destination.getRange("E65").setValue("");
destination.getRange("F65").setValue("");
destination.getRange("B69").setValue("Не делает").setFontColor("red");
destination.getRange("D69").setValue("");
destination.getRange("C69").setValue("");
destination.getRange("E69").setValue("");
destination.getRange("F69").setValue("");
var sheet = destination.getSheets()[0];
sheet.setColumnWidth(1, 250);
sheet.setColumnWidth(2, 64);
sheet.setColumnWidth(3, 64);
sheet.setColumnWidth(4, 64);
sheet.setColumnWidth(5, 64);
sheet.setColumnWidth(6, 64);
sheet.setColumnWidth(7, 64);
sheet.setRowHeight(31, 5);
sheet.setRowHeight(35, 5);
sheet.setRowHeight(39, 5);
sheet.setRowHeight(43, 5);
sheet.setRowHeight(47, 5);
sheet.setRowHeight(51, 5);
sheet.setRowHeight(55, 5);
sheet.setRowHeight(59, 5);
sheet.setRowHeight(63, 5);
sheet.setRowHeight(67, 5);
destination.getRange("A1:B33").setBorder(true, true, true, true, true, true);  
destination.getRange("A33:A70").setBorder(true, true, true, true, false, false); 
destination.getRange("B33:G70").setBorder(true, true, true, true, false, false);
destination.getRange("A32:G32").setBorder(true, true, true, true, false, false);

我不明白这个原因...这段代码可以长时间正常工作,但不会发生什么事情

结果电子表格表不包含部分行和格式。

1 个答案:

答案 0 :(得分:0)

setValue应该用于设置值,而不是公式。要将公式设置为单个单元格,请改用setFormula