使用Google脚本使用新条目从Google表格中移动,删除和替换信息

问题描述 投票:0回答:1

我创建了一个Google表单,用于将时间戳,数值和图像文件从其答复者记录到Google表格中。图片文件会保存到“ imageFolder”中,但是当我收到太多回复时,我的imageFolder和Google Sheet会变得太大。理想情况下,我希望我的imageFolder及其Google表格保持在50个条目以下。

我想将imageFolder中的10个最旧的图像移动到waitFolder。我想从“多少?”列中保存这些最旧值的数组。在删除条目之前。然后,我希望任何新条目替换那些已经保存到waitFolder和howMany()数组(myArray10)的信息中最旧的条目。

[我知道我必须使用以下函数将10张图像从“ imageFolder”移至“ waitFolder”:

var text1 = "Response Form";
var text2 = "imageFolder";
var text3 = "Copy of imageFolder";
var text4 = "Wait Folder"

function moveFiles(sourceFileId, targetFolderId) {
  var myFolder = DriveApp;
  var files = myFolder.getFileById(sourceFileId).getFiles()
  while (files.hasNext()) {
    var file = files.next());
    var dest = myFolder.getFolderById(targetFolderId);
    dest.addFile(file);
    var pull = DriveApp.getFolderById(sourceFolderId);
    pull.removeFile(file);
  }
}


function getMyId(text) {                   
  var Ids = [];
  var myFolder = DriveApp;
  var folderIter = myFolder.getFoldersByName(text);
  var folder = folderIter.next();
  var folderIter = folder.getFiles();
  while(folderIter.hasNext()) {
    var file = folderIter.next();
    var fileId = file.getId();
    Ids.push(fileId);
  }
  return Ids
}

function getMyId10(text) {                   
  var Ids = [];
  var myFolder = DriveApp;
  var folderIter = myFolder.getFoldersByName(text);
  var folder = folderIter.next();
  var folderIter = folder.getFiles();
  for (var i = 0; i < 10; i++) {  //Take the first 10
    while(folderIter.hasNext()) {
      var file = folderIter.next();
      var fileId = file.getId();
      Ids.push(fileId);
    }
  }   
  return Ids
}

function main() {
  var imageFolderId = getMyId(text2);
  var imageFolderId10 = getMyId10(text2);
  var waitFolderId = getMyId(text4);
  var Copy_imageFolderId = getMyId(text3);
  moveFiles(imageFolderId, Copy_imageFolderId); //make a copy of imageFolder
  moveFiles(imageFolderId10, waitFolderId);     //Move first 10, remove from original
}

如何将图像从imageFolder移至Copy_imageFolder?如何将10个最旧的图像从imageFolder移到waitFolder?如何从imageFolder中删除10个最旧的图像?如何使用Google脚本限制电子表格中的行数?如何用新条目/行覆盖最早的行?

edit1:我在每个函数中都得到了意外的令牌,我不确定为什么吗?它似乎在我的函数getMyId()的while循环中弹出。

edit2:我现在知道为什么我得到了意外的令牌。似乎我对自己的循环不负责任。我用“ for”代替了“ while”,以修正此错误。

edit3:我删除了一些不必要的代码片段,以使其易于理解。

edit4:enter image description here这是我在电子表格中的表单响应。图像将保存到子文件夹imageFolder。但是我无法使用howMany()从电子表格中获取我想要的10个数组元素。我似乎也无法将任何文件移动到任何地方。当我调用moveFiles()时,当我要求我的DriveApp时,我会收到意外错误。如何使我的moveFiles()将图像从源文件夹移动到目标文件夹?

arrays google-apps-script google-sheets google-drive-api spreadsheet
1个回答
0
投票

也许这就是您想要的:

function moveFiles(sourceFolderId, targetFolderId) {
  var srcFolder=DriveApp.getFolderById(sourceFolderId);
  var desFolder=DriveApp.getFolderById(targetFolderId);
  var files=srcFolder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    desFolder.addFile(file);
    srcFolder.removeFile(file)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.