我正在尝试使用附加到谷歌作业表中按钮的脚本在谷歌驱动器中创建一个新档案夹。到目前为止,我已经完成了能够创建档案夹的作业。我的请求是帮助使用来自行中两个单元格的值来命名档案夹。例如:序列号和客户名称是作业表中的两列。因此,在该行中,当我单击创建档案夹按钮时,我希望创建的档案夹名称为 Serial No-Customer Name(例如 1-XYZ)。我在网上为此搜索了很多,但没有得到任何可以使用的东西。我不是技术人员,所以我发现很难理解如何做到这一点。欢迎任何帮助。谢谢,拉维
uj5u.com热心网友回复:
假设序列号在 A 中,客户名称在 B 中,并且在同一行的任何位置都有一个复选框
创建新档案夹并命名
function onSpeEdit(event){
var sheet = event.source.getActiveSheet();
var cel = event.source.getActiveRange();
if (cel.getValue()==true){
var name = sheet.getRange('A' cel.getRow()).getValue() '_' sheet.getRange('B' cel.getRow()).getValue()
if (name!=''){
sheet.getRange('F' cel.getRow()).setValue(getFolderId(name))
}
}
}
function getFolderId(name){
var id;
var folders = DriveApp.getFoldersByName(name);
if (folders.hasNext()) {
var folder = folders.next();
id = folder.getId(); }
else {
var folder = DriveApp.createFolder(name);
id = folder.getId();
}
return id;
}
因此我也防止使用相同的名称两次创建相同的档案夹
在 onSpeEdit 上放置一个可安装的触发器
您将在 F 列中取回档案夹 ID
驱动程序
可安装触发器
uj5u.com热心网友回复:
问题是分配给脚本的按钮/形状不包含您放置它的位置。它没有系结到一个单元格,它漂浮在它上面。
您可能会想到的第一件事是创建多个按钮并为每个按钮创建一个功能,但这非常耗时,而且更糟糕的是,实作起来非常糟糕。
所以我们必须创造性地确定我们想要处理的细胞。这是我的想法,因此您可以确定要为其创建档案夹的行。
您需要添加一列,用于标识是否要处理该行。勾选复选框并按下按钮后,脚本现在会回圈所有行并查找勾选复选框的行。然后根据其保存的资料创建一个档案夹。如果勾选了多个复选框,这也允许您创建多个档案夹。请参阅下面的脚本和影像:
脚本:
function createFolder() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
values.forEach(function (row) {
var [isTicked, serialNum, customerName] = row;
// if column A is ticked
if(isTicked) {
var name = `${serialNum}-${customerName}`;
var folders = DriveApp.getFoldersByName(name);
// if name generated is not existing
if(!folders.hasNext())
DriveApp.createFolder(name);
}
});
}
0 评论