Google Script в Sheets, Ссылка на последнюю строку, чтобы найти номер билета и номер клиента, а затем использовать его, чтобы найти папку для добавления дочерней папки - PullRequest
0 голосов
/ 29 апреля 2020

Я надеюсь, что смогу объяснить это ясно.

У меня есть лист Google с листом "Ticket" и листом "Customner Data". Билетный лист имеет столбец A как «Номер билета», столбец B как «Имя клиента». Лист данных клиента содержит столбец A Номер клиента, столбец C «Имя», столбец D «Фамилия».

I есть скрипт, который при добавлении каждого клиента в новую строку создает папку в папке на диске в формате «Фамилия Имя - Номер клиента»

Я пытаюсь сделать так, как добавляется новая строка на листе «Билет» скрипт может найти папку клиента, затем добавить дочернюю папку с именем «TicketNumber».

Вот код, который я пробовал, чтобы вы могли увидеть, где я застрял. Спасибо

    //Global

var googleFolderID = ('DRIVE FOLDER ID');
var ss = SpreadsheetApp.getActive();

function createTicketFolder() {


// identify the sheet where the data resides
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Tickets");

//Select the column we will check for the first blank cell
var columnToCheck = sheet.getRange("A:B").getValues();

// Get the last row based on the data range of a single column.
var lastRow = getLastRowSpecial(columnToCheck);

  //identify the cell that will be used to name the folder 
 var ticketNumber = sheet.getRange(lastRow,1,1,1);
  var customerNumber = sheet.getRange(lastRow,2,1,1);


//identify the parent folder the new folder will be in
var parentFolder=DriveApp.getFolderById(googleFolderID);

// Find Customer folder within parentFolder, formatted as "Lastname Firstname - CustomerNumber"
//Need Help here

//create the new folder
var newFolder=customerFolder.createFolder(ticketNumber);


};



function getLastRowSpecial(range){
  var rowNum = 0;
  var blank = false;
  for(var row = 0; row < range.length; row++){

    if(range[row][0] === "" && !blank){
      rowNum = row;
      blank = true;
    }else if(range[row][0] !== ""){
      blank = false;
    };
  };
  return rowNum;
};

Листы Google Лист "Ticket"

The Ticket Sheet

Данные клиента "Лист

The Customer Data Sheet

Папка Google Диска Так форматируются папки на диске Google.

enter image description here

Итак, из приведенных выше листов мне нужно найти папку клиента и добавить подпапку с номером заявки в качестве имени папки.

1 Ответ

1 голос
/ 29 апреля 2020

Вам необходимо выполнить следующие шаги

  1. Получить номер клиента из последней записи на Tickets листе
  2. Найти строку, содержащую этот номер, в листе Customer Data с indexOf ()
  3. Получить имя и фамилию, чтобы восстановить имя папки клиента
  4. Найти папку по имени

Образец:

...
//IMPORTANT: retrieve the value!
  var ticketNumber = sheet.getRange(lastRow,1).getValue();
  var customerNumber = sheet.getRange(lastRow,2).getValue();  
  //identify the parent folder the new folder will be in
  var parentFolder=DriveApp.getFolderById(googleFolderID);
  var customerSheet = ss.getSheetByName("Customer Data");
  var data = customerSheet.getDataRange().getValues();
  // the following line retrieves all customerIds from the 2-D value range and saves them in the 1-D array "customerIds" - necessary for using indexOf()
  var customerIds = data.map(function(e){return e[0];}); 
  var index = customerIds.indexOf(customerNumber);
  // if the customer number has been found
  if(index >= 0){
    // Lastname Firstname - Customernumber"
    var folderName = data[index][3] + " " + data[index][2] + " - " + data[index][0]; 
    //  retrieve the first folder with this name - important: avoid duplicates!
    var customerFolder = parentFolder.getFoldersByName(folderName);//.getFoldersByName(folderName);
    if(customerFolder.hasNext()){
      customerFolder = customerFolder.next();
      //check if ticket folder exists
      var ticketFolder=customerFolder.getFoldersByName(ticketNumber);
      if(ticketFolder.hasNext()){
        var newFolder = ticketFolder.next();
       } else {
        // if it does not exist, create the new folder
        var newFolder=customerFolder.createFolder(ticketNumber);
       }
    }    
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...