Ste*_*rry 2 google-sheets google-apps-script
我不敢相信没有一种简单的方法可以做到这一点,但我到处寻找可行的解决方案,但没有成功。
我正在 Google Sheet 中运行 Google 脚本,并且我在代码中想要将电子表格另存为新文件名。在我这样做之前,我想检查一下是否已经存在一个(因为我不想覆盖它)。
无论文件夹或文件是否存在,我用来测试的下面的代码都会返回“文件存在”。
与往常一样,非常感谢任何帮助:-)
这是我的测试代码。
function testscriptforfileexistance() {
filecheck = checkfileexists("UnderDevelopment",'20160919 Weekly Roster v1.0.gsheet');
if (filecheck.filefound = true) {
Browser.msgBox("file found") ;
} else {
Browser.msgBox("File not found");
}
}
function checkfileexists(foldername,fn) {
var destFolder = DriveApp.getFoldersByName(foldername);
filefound=false;
var destFileId = DriveApp.getFilesByName(fn);
//if hasnext returns false, presumably it doesn't exist
if (!destFileId.hasNext) {
Logger.log ("Found");
filefound = true;
// and as a second test, if the length is zero the file doesn't exist
if (!destFileId[0]) {
Logger.log ("zero length");
filefound=false;
}
}
return {filefound:filefound};
}
Run Code Online (Sandbox Code Playgroud)
干杯...史蒂夫
这有点令人困惑,因为hasNext如果您要检查特定文件夹中的文件夹/文件或文件是否存在,则涉及很多。我通过反复试验得到了这个工作。
- 确定调用是否
next()会返回一个项目。返回
Boolean——true如果next()将返回一个项目;false如果不
首先这里有一些相关的问题:
这是一个示例代码:
function checkFile(filename){
var results;
var haBDs = DriveApp.getFilesByName(filename)
//Does not exist
if(!haBDs.hasNext()){
results = haBDs.hasNext();
}
//Does exist
else{
results = haBDs.hasNext();
}
Logger.log(results)
return results;
}
function myFunction() {
var nomeDB = "FILE_NAME";
if(checkFile(nomeDB) == true){
Logger.log("File Found")
}else{
Logger.log("File Not Found")
}
}
Run Code Online (Sandbox Code Playgroud)
检查您的代码,尝试更改!destFileId.hasNext为!destFileId.hasNext()
附加信息,如果您要检查文件是否存在于特定文件夹中,您将使用相同的流程,但您必须检查该文件夹是否也存在(可选)。
这是一个片段:
function checkFile2(filename,foldername){
var folder = DriveApp.getFoldersByName(foldername);
Logger.log(folder.hasNext());
//Folder does not exist
if(!folder.hasNext()){
Logger.log("No Folder Found");
}
//Folder does exist
else{
Logger.log("Folder Found")
var file = folder.next().getFilesByName(filename);
if(!file.hasNext()){
Logger.log("No File Found");
}
else{
Logger.log("File Found");
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
所以我阅读了所有答案,并认为我可以将@Stoopkid 发布的答案简化为更简洁的函数:
function fileExists_(filename, foldername) {
var folder = DriveApp.getFoldersByName(foldername);
if (!folder.hasNext()) {
return false;
}
return folder.next().getFilesByName(filename).hasNext();
}
Run Code Online (Sandbox Code Playgroud)
虽然,我实际使用的版本将特定文件夹作为参数而不是名称:
function fileExists_(filename, folder) {
return folder.getFilesByName(filename).hasNext();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13321 次 |
| 最近记录: |