Построение имени экспорта в PDF из многострочных записей в ячейках, вызывающих проблемы

Я довольно новичок в написании сценариев и учусь, делая что-то (или, точнее, находя щедрых людей, которые делают это для меня), так что на самом деле не знаю много. Извиняюсь, если код неправильный, тупой или неправильно отформатированный.

У меня есть этот код, который должен экспортировать лист в формате PDF и назвать экспорт на основе строк в определенных ячейках. Это хорошо работает до тех пор, пока вы не добавите многострочную ячейку в микс. Код, вызывающий проблему, приведен ниже, а бит, вызывающий проблему, engine[0]:

function Generate_Form() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName('JobRequestForm'));

  var tpjlr = ss.getRange("H8:I8").getValue();
  if (tpjlr.length > 0) {
                         var email = "x@jaguarlandrover.com"
                         var email1 = ss.getRange("H5:I5").getValue() + ("@jaguarlandrover.com");
                         var email2 = ss.getRange("H6:I6").getValue() + ("@jaguarlandrover.com");
                         }

  var subject = "Job request from " +ss.getRangeByName("D5:E5").getValue()+ "_" +ss.getRangeByName("D13:E13").getValue()+ "_" +ss.getRangeByName("D14:E14").getValue()+ "_TPJLR_" +ss.getRangeByName("H8:I8").getValue()+ "_" +ss.getRangeByName("D7:E7").getValue();
  var body = "Objective of the request:-    " + ss.getRange("D18:I18").getValue();
  var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());

  var url_ext = 'exportFormat=pdf&format=pdf'        // export as pdf / csv / xls / xlsx
  + '&size=letter'                       // paper size legal / letter / A4
  + '&portrait=true'                    // orientation, false for landscape
  + '&fitw=true&source=labnol'           // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&gid='+ss.getSheetId();                             // the sheet's Id

  var token = ScriptApp.getOAuthToken();
  var engine = ss.getRange("D15:E15").getValue().split("\n");
  var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
  var response = UrlFetchApp.fetch(url + url_ext, {
      headers: {
        'Authorization': 'Bearer ' +  token
      }
    }).getBlob().setName(name);

 // var blob = response.getBlob().setName(name);

  if (MailApp.getRemainingDailyQuota() > 0) 
    GmailApp.sendEmail(email, subject, body, {
      htmlBody: body,
      attachments:[response]     
    });

1 ответ

Решение

Поэтому я заменил

 var engine = ss.getRange("D15:E15").getValue().split("\n");
 var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";

с

var input = ss.getRange("D15:E15").getValue();
var engine = input.replace(/(?:\r\n|\r|\n)/g, '_');
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue()+ "_" + engine + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";

Работает сейчас

Другие вопросы по тегам