修改Google App脚本-Gmail到Google云端硬盘

时间:2018-11-09 07:12:13

标签: google-apps-script google-drive-api gmail

我正在尝试修改以下脚本: https://github.com/ahochsteger/gmail2gdrive

我需要脚本来检查该文件是否已经存在于Google云端硬盘中,如果不存在,请创建它。目前,该脚本仅将文件创建到Google云端硬盘中,而无需检查是否存在同名的现有文件。

我不是程序员,我对Google App Script一无所知(尽管我设法进行了设置并使其运行),对JavaScript一无所知。我只是想知道是否有人可以向我指出正确的方向或帮助我编写我需要的这一功能?

据我了解(可能是错误的),附件是根据代码中的这一行创建的:

var file = folder.createFile(attachment);

所以我尝试在createFile之前添加它:

var file = folder.removeFile(attachment);

我的逻辑是,如果文件存在于文件夹中,则在创建文件之前先将其删除(因此避免重复文件)。但这没用。

1 个答案:

答案 0 :(得分:1)

从问题中的GitHub脚本中发现attachment是blob。那么如何使用该文件名呢?我认为针对您的情况有几种解决方案。因此,请将此视为其中之一。示例脚本的流程如下。

  1. 检索blob的文件名。
  2. 使用getFilesByName()检索FileIterator。
  3. 如果FileIterator具有值,则意味着具有相同文件名的文件已经存在。
  4. 如果FileIterator没有值,则意味着不存在具有相同文件名的文件。

示例脚本如下。

示例脚本1:

如果只想在不存在相同文件名的文件时创建新文件,则可以使用以下脚本。

var fileName = attachment.getName();
var f = folder.getFilesByName(fileName);
var file = f.hasNext() ? f.next() : folder.createFile(attachment);

示例脚本2:

如果要在存在相同文件名的文件时执行某些操作,则可以使用以下脚本。

var fileName = attachment.getName();
var f = folder.getFilesByName(fileName);
var file;
if (f.hasNext()) {
  // If the file has already been existing, you can do something here.
} else {
  //  If the file is not existing, you can do something here.
  file = folder.createFile(attachment);
}

注意:

  • 根据您的问题,从文件夹中搜索文件。如果要从所有文件中搜索文件,请告诉我。

参考文献:

如果这不是您想要的,请告诉我。我想修改它。