首页 > 解决方案 > 每个 GScript 移动一个文件

问题描述

我尝试将文件从我的根文件夹移动到定义的文件夹中。但是我的脚本向我发送了错误:“异常:参数(字符串)与 DriveApp.File.moveTo 的方法签名不匹配。” - 但为什么?

有人给我小费吗?

function myMoveFile() {
  var myFolderID = DriveApp.searchFolders("Title Contains 'Final_Folder'").next().getId();

  var myNewDoc = DocumentApp.create("Doc per Script");
  var myFileID = myNewDoc.getId();  
  DocumentApp.openById(myFileID).getBody().appendParagraph("TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT");
  
  Logger.log(myFolderID);

  DriveApp.getFileById(myFileID).moveTo(myFolderID);
}

谢谢

标签: google-apps-scriptgoogle-drive-api

解决方案


destinationofmoveTo(destination)是不是文件夹 ID 的文件夹对象。我认为这可能是您的问题的原因。那么下面的修改呢?

修改后的脚本:

function myMoveFile() {
  var myFolder = DriveApp.searchFolders("Title Contains 'Final_Folder'").next();

  var myNewDoc = DocumentApp.create("Doc per Script");
  var myFileID = myNewDoc.getId();  
  DocumentApp.openById(myFileID).getBody().appendParagraph("TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT");
  
  Logger.log(myFolder.getId());

  DriveApp.getFileById(myFileID).moveTo(myFolder);
}

参考:

添加:

关于以下第二个问题,

我的意图是通过 GScript 创建一个文件,然后将它移动到一个定义的文件夹(例如“Final_Folder”)。我要移动 2 个同名文件夹,以避免将文件移动到错误的文件夹。

在这种情况下,作为一种解决方法,使用星号怎么样?在 Google 云端硬盘中,可以将星号添加到文件和文件夹中。在您的情况下,当存在相同的文件夹并且您想将文件移动到其中一个文件夹时,请在您要使用的特定文件夹中添加一个星号。我认为这可能是从相同文件夹名称中识别特定文件夹的解决方法。

示例脚本:

在运行此脚本之前,请在您要使用的文件夹中添加一个星号。并且,运行这个脚本。这样,文件将移动到已加星标的文件夹中。这样,您可以使用相同文件夹名称中的特定文件夹。

function myMoveFile() {
  var folders = DriveApp.searchFolders("Title Contains 'Final_Folder'");
  while (folders.hasNext()) {
    var myFolder = folders.next();
    if (myFolder.isStarred()) {
      var myNewDoc = DocumentApp.create("Doc per Script");
      var myFileID = myNewDoc.getId();
      DocumentApp.openById(myFileID).getBody().appendParagraph("TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT");

      Logger.log(myFolder.getId());

      DriveApp.getFileById(myFileID).moveTo(myFolder);
      break;
    }
  }
}

推荐阅读