Sheet中的Google脚本,参考最后一行,查找故障单编号和客户编号,然后使用它来查找添加子文件夹的文件夹
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sheet中的Google脚本,参考最后一行,查找故障单编号和客户编号,然后使用它来查找添加子文件夹的文件夹相关的知识,希望对你有一定的参考价值。
我希望我能清楚地解释这一点。
我有一个带有“票证”表和“客户数据”表的Google工作表。票证表的A列为“票证编号”,B列为“客户姓名”客户数据表的A列为客户编号,C列为“名字”,D列为“姓氏”。
我有一个脚本,当每个客户被添加到新行时,它将在驱动器的文件夹中以“姓氏名-客户编号”的格式创建一个文件夹
[我正在尝试将新行添加到“票证”工作表中,脚本可以找到客户文件夹,然后添加名为“ 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云端硬盘文件夹这是Google驱动器文件夹的格式。
因此,从上面的工作表中,我需要找到客户文件夹,并添加一个带有票号的子文件夹作为文件夹名称。
答案
您需要执行以下步骤
- 从
Tickets
表的最后一个条目中检索客户编号 - 用
Customer Data
在indexOf()表中找到包含该编号的行 - 检索名字和姓氏以重构客户文件夹的名称
- 按名称查找文件夹
示例:
...
//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();
//create the new folder
var newFolder=customerFolder.createFolder(ticketNumber);
以上是关于Sheet中的Google脚本,参考最后一行,查找故障单编号和客户编号,然后使用它来查找添加子文件夹的文件夹的主要内容,如果未能解决你的问题,请参考以下文章
Google Sheets API v4 - 如何获得最后一行的价值?
使用getValue()的Google Sheet两行单元格
用于将 google drive 中的文件名列表与 google sheet 列中的名称列表进行比较的 Apps 脚本,以将新文件从驱动器添加到工作表
在 Google Sheet 模板的容器绑定脚本中维护启用的 API