我正在嘗試使用附加到谷歌作業表中按鈕的腳本在谷歌驅動器中創建一個新檔案夾。到目前為止,我已經完成了能夠創建檔案夾的作業。我的請求是幫助使用來自行中兩個單元格的值來命名檔案夾。例如:序列號和客戶名稱是作業表中的兩列。因此,在該行中,當我單擊創建檔案夾按鈕時,我希望創建的檔案夾名稱為 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);
}
});
}
樣本:

輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/394366.html
標籤:谷歌应用程序脚本
上一篇:如何在GoogleApps腳本中使用Logger.log記錄[1,2,3]而不是[1.0,2.0,3.0]?
下一篇:For回圈不迭代變數
