【发布时间】:2023-03-08 20:36:01
【问题描述】:
我想在谷歌脚本中创建一个触发器,它每周一上午 9 点运行这些函数。但是,我的第一行代码清除了 google 表格的内容,因此可以将其替换为新信息。现在,当我从第一行代码创建一个函数时,该函数会重复运行,这意味着它总是会清除 google 表格的内容并给我留下一张空白表格(这对我来说是最合理的解释)。根据我对触发工具的理解,我只能在函数上创建触发器,而不是整个代码(这对吗?)-我该如何解决这个问题?
提前谢谢你!
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:Z500");
range.clearContent();
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var topFolder = DriveApp.getFolderById("FolderID");
var topPath = "";
sheet.appendRow(["Extracted Folder", "Industry", "Client", "Projectname","Folder (empty/not empty)", "Link to Folder", "Date Created", "Owner"])
iterateSubFolders(topFolder, topPath, 3)
}
function iterateSubFolders(callingFolder, callingPath, depth) {
var callingFolderName = callingFolder.getName();
var callingFolderFullPath = callingPath.toString() + callingFolderName.toString() + "/";
addRowToSheetForFolder(callingFolder, callingFolderFullPath);
n=0;
var childSubFolders = callingFolder.getFolders();
while ((childSubFolders.hasNext()) && (n < depth) ) {
var nextSubFolder = childSubFolders.next();
iterateSubFolders(nextSubFolder, callingFolderFullPath, depth - 1);
}
return callingFolderFullPath;
}
function addRowToSheetForFolder(folder, fullFolderPath) {
data = [
fullFolderPath.toString(),
// fullFolderPath.split("/"), Getting weird values when splitted
"INDUSTRY",
"CLIENT",
"PROJECT",
folder.getSize(),
folder.getUrl(),
folder.getDateCreated(),
"manuell pflegen",
folder.getDescription()
];
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(data);
}
当我将第一行转换为函数时,代码不再有效,所以我把它省略了
【问题讨论】:
-
正确,触发器将运行指定的函数。但是,触发器调用的函数可以调用其他函数。我在许多项目中都成功地做到了这一点。
-
当你将全局变量设置为一个独立的函数时,你是如何调用它们的?
标签: javascript google-apps-script google-sheets