使用搜索文件获取权限错误

时间:2015-12-11 12:20:33

标签: google-apps-script google-sheets

我收到“你没有权限调用searchFiles(第2行)。”在下面的代码中。当我在编辑器中测试运行时没有错误。但是当我在工作表中使用它时,我得到了错误。我如何获得许可?

function deleteDocByName(fileName){
    var docs=DriveApp.searchFiles('title contains fileName')
    for(n=0;n<docs.length;++n){
        if(docs[n].getName() == fileName){
            var ID = docs[n].getId()
            DriveApp.getFileById(ID).setTrashed(true)
        }
    }
}

2 个答案:

答案 0 :(得分:1)

@Sandy,

我终于让功能发挥作用了。删除了列出的脚本中的文件的行已注释。当我删除评论时,我收到了未定义的ID错误。所以我通过添加以下行来为ID分配值:

ID = Logger.log(thisDoc.getId());

但是生成的ID无效错误。所以我修改了脚本并使其工作。

以下是我提出的建议:

function deleteDocByName(fileName){
    var docs = DriveApp.searchFiles('title contains "' + fileName + '"');
    var thisDoc;

    while (docs.hasNext()) {
        thisDoc = docs.next();
        var ID = thisDoc.getId();
        DriveApp.getFileById(ID).setTrashed(true)
    }
 }

我还使用onChange来触发saveAsTabDelimitedTextFile()。

答案 1 :(得分:0)

更改此行:

var docs=DriveApp.searchFiles('title contains fileName')

要:

var docs=DriveApp.searchFiles('title contains "' + fileName + '"');

并且您无法使用for循环。

完整代码:

function deleteDocByName(fileName){
    //fileName = 'Test';
    var docs = DriveApp.searchFiles('title contains "' + fileName + '"');
    var thisDoc;

    Logger.log(docs.hasNext())

    while (docs.hasNext()) {
      thisDoc = docs.next();
      Logger.log(thisDoc.getId());
      //DriveApp.getFileById(ID).setTrashed(true)
    };
}

此问题与权限无关。错误是错误的。