簡體   English   中英

Google Script in Sheets, Reference 最后一行,找到票號和客戶號,然后用它找到文件夾添加子文件夾

[英]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

我希望我能清楚地解釋這一點。

我有一個帶有“票證”表和“客戶數據”表的 Googlesheet。 工單表的 A 列作為“票號”,B 列作為“客戶姓名” 客戶數據表有 A 列客戶編號,C 列“名字”,D 列“姓氏”。

我有一個腳本,當每個客戶添加到一個新行時,它會在驅動器中的文件夾中創建一個文件夾,格式為“Lastname Firstname - Customernumber”

我想要做的是將新行添加到“Ticket”表中,腳本可以找到客戶文件夾,然后添加名為“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 表格“票證”表格

票務表

“客戶數據”表

客戶數據表

Google Drive 文件夾這是 google drive 文件夾的格式化方式。

在此處輸入圖像描述

因此,我需要從上面的表格中找到客戶文件夾並添加一個以票號作為文件夾名稱的子文件夾。

您需要執行以下步驟

  1. Tickets表的最后一個條目中檢索客戶編號
  2. 使用indexOf()Customer Data表中查找包含此數字的行
  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);
       }
    }    
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM