DocsList到DriveApp:在对象中找不到函数addFile:第165行

时间:2015-04-27 00:36:31

标签: google-apps-script

我知道我并不是唯一一个因谷歌贬低DocsList而赞成DriveApp而出现问题的人。我已在代码中用DocList替换了DriveApp的所有引用。

我有一个电子表格,其中包含过去与Google文档模板很好地合并的变量,实际上是一个mailmerge。

以下是声明的变量:

var myDataSheet, myVariablesSheet;
var rowId, maxRows, maxRowsOverride;
var templateDocId;
var timeZone, timestamp, dateline;
var newFolder, newFolderId, collectionDate, collectionName,appendTimestamp;
var newDocNameBase, newDocNameSuffixCol, newDocName, newDoc, newDocId;
var fieldColRow, fieldArr, colArr;

当我运行脚本时,我将返回在我的代码的第165行标识的错误。错误说明:

  

TypeError:无法在对象的Copy of Letter中找到函数addFile   代表模板。 (第165行,文件“邮件合并”)

第165行:

DriveApp.getFileById(newDocId).addFile(DriveApp.getFolderByName(newFolderId));

奇怪的是,(至少对我而言)当我运行脚本时,我得到了一个输出的合并文档,但是从来没有多于一个。

我怀疑我正在处理某种类型的失败循环,以及我的文件命名和我的目标文件夹的问题,但我无法超越我的位置...任何见解,帮助或只是直接修复赞赏。

2 个答案:

答案 0 :(得分:0)

getFolderByName()方法返回文件夹迭代器。换句话说,它返回一个"对象"可以有多个元素。即使您可能只有一个具有给定名称的文件夹,您仍然需要使用循环来访问该文件夹。

Google Documentation - Folder Iterator

您无法将所有方法链接在一行代码中,从而导致错误。

答案 1 :(得分:0)

我看到你的代码出现了一些错误。

  1. DriveApp.getFolderByName(String)查找具有给定名称的文件夹,并返回多个文件夹。你好像已经传入了文件夹的id。文件夹的ID和名称不同。您可以创建名为“MyFolder”的文件夹,以及另一个名为“MyFolder”的文件夹。他们的名字是一样的,但他们的身份将是独一无二的。
  2. 您正在调用不存在的File.addFile(Folder);。这就是你得到这个错误的原因。您应该切换它并使用Folder.addFile(File)代替。这是固定代码:
  3. DriveApp.getFolderById(newDocId).addFile(DriveApp.getFileById(newDocId));

    这个问题有点陈旧,但我希望我能提供帮助:)。