Javascript DriveApp.getStorageUsed()和DriveApp.getFiles()返回的文件大小总和不匹配。

Javascript DriveApp.getStorageUsed()和DriveApp.getFiles()返回的文件大小总和不匹配。,javascript,google-app-engine,google-apps-script,google-cloud-platform,Javascript,Google App Engine,Google Apps Script,Google Cloud Platform,===========================问题 当我使用以下代码时: Logger.log(DriveApp.getStorageUsed()) 我得到的值是:6.888066988E9 该数字与GDrive上显示的数字匹配。使用此代码时会出现问题: var files = DriveApp.getFiles() var fileSizeTotal = 0; while (files.hasNext()) { fileSizeTotal += files.next().get

===========================问题

当我使用以下代码时:

Logger.log(DriveApp.getStorageUsed())
我得到的值是:6.888066988E9

该数字与GDrive上显示的数字匹配。使用此代码时会出现问题:

var files = DriveApp.getFiles()
var fileSizeTotal = 0;

while (files.hasNext()) {
  fileSizeTotal += files.next().getSize()
}
我得到的值是:3.539154182E9

根据我的逻辑,数字应该是相同的,但显然不是

========================问题


造成差异的原因是什么?我如何使迭代中的文件大小总和与DriveApp.getStorageUsed()调用的大小相匹配?

当我看到您的问题时,起初我认为这种差异与垃圾箱有关。所以我制作了一个示例脚本来验证这一点

作为一个示例文件,我将两个大小为100kbytes的文本文件放在清理过的谷歌硬盘上。我把一个文件放进了垃圾箱。因为你知道,谷歌文档没有文件大小

示例脚本: 为了使用此示例,请在和Google API控制台上启用驱动器API。请执行
run()

结果:
getStorageUsed()
getSize()
的结果分别为200000.0和100000.0。和共享文件都包含在垃圾箱的外部。因此,当共享大小为100KB的文件时,上述两个结果都会添加100KB

讨论: 根据这些结果,我认为
getStorageUsed()
getSize()
之间的区别在于文件是否包含在垃圾箱中

但我认为可能还有其他因素。如果你使用这个样品,我能问一下你的结果吗?如果你的结果与我的估计不一样,我们可以知道其他因素的存在

如果这些信息对你有帮助,我很高兴

补充: 您还可以使用
Drive.About.get()
检索存储信息。谢谢@Sagar Kanabar

var obj = Drive.About.get();
var out = {
  usageInDrive: obj.quotaBytesUsed,
  usageInTrash: obj.quotaBytesUsedInTrash
};
Logger.log(out)

>>> {usageInTrash=100000, usageInDrive=200000}

由此可知,驱动器中的内存为100kb,垃圾箱中的内存为100kb。

请检查此项,以便提出问题@Sagar Kanabar我忘记了
Drive.About.get()
。谢谢你提供的信息。@Jack Dalton我很高兴它能对你有用。
{NumberOfFilesWithSize=2.0, TotalFiles=2.0, TotalFilesize=200000.0, IncludeTrash=yes}
{NumberOfFilesWithSize=1.0, TotalFiles=1.0, TotalFilesize=100000.0, IncludeTrash=no}
var obj = Drive.About.get();
var out = {
  usageInDrive: obj.quotaBytesUsed,
  usageInTrash: obj.quotaBytesUsedInTrash
};
Logger.log(out)

>>> {usageInTrash=100000, usageInDrive=200000}