为什么会有 SpreadsheetApp。 open() 函数但不是 DocumentApp.open()?

Why is there a SpreadsheetApp. open() function but not a DocumentApp.open()?

当我测试这个脚本时;

function loop() {
    var folder = DriveApp.getFolderById('actualIDhere');
    var files = folder.getFiles();
    while(files.hasNext()){
        var doc = DocumentApp.open(files.next());
        ...
    }
}

我收到这个错误:

TypeError: Cannot find function open in object DocumentApp. (line 5, file "Code")

google 模拟应用程序电子表格(我从中获取)似乎可以工作(参见此处:https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

// Get any starred spreadsheets from Google Drive, then open the spreadsheets
// and log the name of the first sheet within each spreadsheet.

var files = DriveApp.searchFiles('starred = true and mimeType = "' + MimeType.GOOGLE_SHEETS + '"');
while (files.hasNext()) {
    var spreadsheet = SpreadsheetApp.open(files.next());
    var sheet = spreadsheet.getSheets()[0];
    Logger.log(sheet.getName());
}

知道失败的原因以及用什么代码替换它吗?

认为:

var doc = DocumentApp.open(files.next());

应该是:

var doc = DocumentApp.openById(files.next().getId());

因为 fileId 是那里的预期参数。

DocumentApp 的可用方法列在https://developers.google.com/apps-script/reference/document/document-app

没有 open 方法,但有两种打开文档的方法:

  • openById(id)
  • openByUrl(url)

因为 files.next() returns 具有以下方法的 File 对象:

  • getId()
  • getUrl()

使用哪种 DocumentApp 方法由您决定。