我可以使用另一个脚本向Google Sheet添加脚本吗?

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

我有一个脚本populate()来在Google Sheet上运行一个自动化脚本。我希望这个脚本能在一百多个Google Sheet文件上运行。有没有办法写一个脚本来添加到(或至少运行)我的populate()脚本在所有这些文件上?我更希望能够将脚本添加到每个文件上,因为我们可能需要为每个文件多次运行脚本。否则,我将不得不手动复制脚本到每个工作表,这需要时间。

更新了。删除了将Excel文件转换为Google Sheets的部分,因为我在另一个帖子中找到了答案。此处.

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

解决办法

根据我从你的帖子中了解到的情况,你的问题是关于如何将Drive文件夹内的一系列Excel文件转换为Google Sheets,然后在其中执行一个函数。

对于这一点,你可以迭代你的文件夹中的所有文件,并转换它们与使用的 Drive.insert 的驱动API。为此,您必须在您的脚本中启用 高级谷歌服务. 如果您不知道如何操作,请按照以下步骤操作 这些迹象.

下面的脚本执行我认为你的目标,它有自我解释的注释。

function convertExcelToGoogleSheets() {
  
  // Id of the folder where you have all your excel files
  var folderId = 'FOLDERID';
  var folder = DriveApp.getFolderById(folderId);
  
  // Get all the files in your folder and iterate over them
  var files = folder.getFiles();
  // For each file:
  while (files.hasNext()){
    var file = files.next();
    
    // Get its blob (content)
    var blob = file.getBlob();
    
    // Create the resource to insert the Google Sheet file. Put the same name
    // as the original and set the type of the file to Google sheets and its 
    // parent folder to where the excel files are located
    var resource = {
      title: file.getName(),
      mimeType: MimeType.GOOGLE_SHEETS,
      parents: [{id: folderId}],
    };
    // User Drive API to insert the actual file and get its ID
    var id = Drive.Files.insert(resource, blob).getId();
    // Whatever function you want to perform in the newly created Google Sheet
    // pasing the parameter of the file id
    myScript(id);  
    }
}

// Set the first cell of all the converted sheets to "IT WORKED"
function myScript(id){
  SpreadsheetApp.openById(id).getActiveSheet().getRange('A1').setValue('IT WORKED!');
}

EDIT: 如果你想为每一个转换后的工作表运行一个脚本,你可以简单的在 while 循环,并将新的文件id作为参数传给他,然后就可以使用该脚本的 (记得把这个脚本封装在一个函数中).

我希望这对你有帮助。如果你还需要什么,或者你有什么不明白的地方,请告诉我 :)

© www.soinside.com 2019 - 2024. All rights reserved.