简体   繁体   中英

Google Script in Sheets, Reference last row, to find Ticket number and customer number, then use it to find a folder to add a child folder

I hope I can explain this clearly.

I have a Googlesheet with a "Ticket" Sheet and a "Customner Data" Sheet. Ticket sheet has Column A as "Ticket Number", Column B as "Customer Name" Customer Data Sheet has column A Customer number, Column C "First Name", Column D "Last Name".

I have a script that as each customer is added to a new row it creates a folder in a folder in drive in the format "Lastname Firstname - Customernumber"

What I am trying to do is as a new row is added to the "Ticket" sheet the script can find the customer folder then add child folder named "TicketNumber".

Here is the code I have been trying so you can see where I am stuck. Thank you

    //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;
};

The Google sheets The "Ticket" Sheet

票务表

The "Customer Data" Sheet

客户数据表

Google Drive Folder This is how the google drive folders are formatted.

在此处输入图像描述

So from the sheets above I need to find the customer folder and add a subfolder with ticket number as folder name.

You need to implement the following steps

  1. Retrieve the customer number from the last entry on Tickets sheet
  2. Find the row containing this number in the Customer Data sheet with indexOf()
  3. Retrieve First Name and Last Name in order to reconstruct the name of the customer folder
  4. Find the folder by name

Sample:

...
//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);
       }
    }    
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM