gpt4 book ai didi

google-apps-script - 如果尚不存在,请在云端硬盘中创建新文件夹

转载 作者:行者123 更新时间:2023-12-05 02:16:28 26 4
gpt4 key购买 nike

语境

在我的云端硬盘中有以下结构:

Ops folder || Sales folder

Ops contains 3 folders: Process1 / Process2 / Process3

Sales contains 3 folders: Customer1 / Customer2 / Customer3

目标

我要的是 Drive > SALES 中文件夹的名称

在一张工作表中,我列出了一些潜在客户的姓名。我正在一一检查潜在客户的姓名是否与我云端硬盘中的任何文件夹匹配。

如果存在与潜在客户名称匹配的文件夹,则什么也不做。

如果没有该潜在客户的文件夹,我想在 Sales 中使用潜在客户名称创建一个新文件夹

function prepararPropuesta() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var ssAS = ss.getActiveSheet()
var ssProspects = ss.getSheetByName('Prospects')

var lr = ssProspects.getLastRow()
var lc = ssProspects.getLastColumn()



// I'm looking for the column 'Prospect' in the Sheet
for(i=2; i<lc; i++){

var columnas = ssProspects.getRange(2, i).getValue()
Logger.log(columnas)

if(columnas == 'Nombre Prospect'){

var colProspect = ssProspects.getRange(2, i).getColumn()
Logger.log(colProspect)
}
}


/*
Now I'm looking for the names of the folders in my Drive
This is looking in all my Drive. It would be nice to filter the
search and look just in SubFolders(Sales)
*/
var folders = DriveApp.searchFolders('"me" in owners');
while (folders.hasNext()) {
var folder = folders.next();
Logger.log(folder.getName());

/* The first Prospect Name is in row 2 and I'm creating a loop to
get each Name
If the name matches an existing Folder then ends the function
If the Prospect Name is not found in the Folders list then creates a new Folder under the name prospectName
*/
for(i=2; i<lr; i++){
var prospectName = ssProspects.getRange(i, colCliente).getValue()

var folderName = folder.getName()
if(folderName = prospectName){

return

}
}


DriveApp.createFolder(prospectName)


}
}

在代码的行与行之间,你会发现一步一步的描述

(1) 我正在查找潜在客户名称所在的列 -> 这很好用

(2) 我正在使用 WHILE 获取我的云端硬盘中的所有名称文件夹这个日志

Logger.log(folder.getName())

返回

[18-04-21 06:33:35:985 PDT] FolderIterator

它获取的名称是否正确?

(3) 我创建了变量 folderName 和 prospectName 并循环检查它们是否匹配 -> 这部分无法正常工作。我想我没有使用正确的方法,尽管我在 developers.google 进行了研究。怎么做到的?

谢谢!

最佳答案

在循环中使用 .getValue() 不是一个好主意,因为在这种情况下,您需要为每一行调用一次电子表格。在一次调用中获取所有值然后在脚本中处理返回数组被认为是一种很好的做法。

我不确定为什么需要遍历列来查找具有名称的列?假设您知道该列是什么,您可以直接获取该列的值(名称)。

这是一个假设工作表“前景”的 B 列(更改范围以适应)中的名称的示例。对于找到的每个名称,都会调用函数 checkIfFolderExistElseCreate()。该函数检查是否存在名称为(第二个参数)的文件夹。如果是,则不会发生任何其他情况,会创建一个具有该名称的文件夹。

该函数的第一个参数是将在其中创建新文件夹的“父”文件夹。

function prepararPropuesta() {
var parent = DriveApp.getFolderById("id_of_parentFolder")
SpreadsheetApp.getActive().getSheetByName('Prospects').getRange('B2:B').getValues()
.forEach(function (r) {
if(r[0]) checkIfFolderExistElseCreate(parent, r[0]);
})
}

function checkIfFolderExistElseCreate(parent, folderName) {
var folder;
try {
folder = parent.getFoldersByName(folderName).next();
} catch (e) {
folder = parent.createFolder(folderName);
}
}

希望这对您有所帮助?

关于google-apps-script - 如果尚不存在,请在云端硬盘中创建新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com