Как мы можем запустить несколько функций в одном приложении Google Drive? - PullRequest
1 голос
/ 12 октября 2019

Я хочу запустить две работы в скрипте приложения Google Drive за один раз, мы можем это сделать? извините, я нуб, я не очень разбираюсь в php или скриптах. вот пример кода

function copyfile(e) {
  var filenames = DriveApp.getFoldersByName("abc").next().getFilesByName("filename.txt").next().getBlob().getDataAsString().split("\r\n").filter(String);
  var sourceFolderName = "music";
  var destinationFolderId = "folder id 1";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  for (var i = 0; i < filenames.length; i++) {
    var filename = filenames[i];
    var file = source_folder.getFilesByName(filename);
    if (file.hasNext()) {
var dest_folder = DriveApp.getFolderById(destinationFolderId);
      var srcFile = file.next();
      var newName = srcFile.getName();
      srcFile.makeCopy(newName, dest_folder);
    }
  }
   copyfile1(e); // Added
}

function copyfile1(e) {
  var filenames = DriveApp.getFoldersByName("abc").next().getFilesByName("filename.txt").next().getBlob().getDataAsString().split("\r\n").filter(String);
  var sourceFolderName = "music";
  var destinationFolderId = "folder id 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  for (var i = 0; i < filenames.length; i++) {
    var filename = filenames[i];
    var file = source_folder.getFilesByName(filename);
    if (file.hasNext()) {
var dest_folder = DriveApp.getFolderById(destinationFolderId);
      var srcFile = file.next();
      var newName = srcFile.getName();
      srcFile.makeCopy(newName, dest_folder);
    }
  }
}

1 Ответ

3 голосов
/ 12 октября 2019

Ответ на вопрос 1:

Когда вы хотите запустить myFunction2 после запуска myFunction1, как насчет следующей модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Шаблон 1:

В этом шаблоне при выполнении myFunction1, myFunction1 и myFunction2 выполняются по порядку.

function myFunction1 () {
  code

  myFunction2(); // Added
}


function myFunction2 () {
  code
}

Шаблон 2:

В этом шаблоне при выполнении main, myFunction1 и myFunction2 выполняются по порядку.

function myFunction1 () {
  code
}


function myFunction2 () {
  code
}

// Added
function main() {
  myFunction1();
  myFunction2();
}

Если это былоне то направление, которое вы хотите, я прошу прощения.

Ответ на вопрос 2:

  • Вы хотите запустить функцию copyfile, изменив переменные filename, sourceFolderName и destinationFolderId.

Я мог бы понять, как это. Если мое понимание верно, как насчет следующей модификации? В этой модификации переменные помещаются в массив, в котором каждый объект имеет объект. Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Пример сценария:

function copyfile(obj) {
  var source_folder = DriveApp.getFoldersByName(obj.sourceFolderName).next();
  var file = source_folder.getFilesByName(obj.filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFolderById(obj.destinationFolderId);
    var srcFile = file.next();
    var newName = srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}

// Please run this function.
function main() {
  // Please set this object.
  var object = [
    {filename: "filenames_value1", sourceFolderName: "sourceFolderName_value1", destinationFolderId: "destinationFolderId _value1"},
    {filename: "filenames_value2", sourceFolderName: "sourceFolderName_value2", destinationFolderId: "destinationFolderId _value2"}
  ];
  for (var i = 0; i < object.length; i++) {
    copyfile(object[i]);
  }
}
  • Перед запуском сценария установите переменные filename, sourceFolderNameи destinationFolderId объекта object.
  • Когда вы запустите скрипт, пожалуйста, запустите main.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...