我有一个脚本populate()来在Google Sheet上运行一个自动化脚本。我希望这个脚本能在一百多个Google Sheet文件上运行。有没有办法写一个脚本来添加到(或至少运行)我的populate()脚本在所有这些文件上?我更希望能够将脚本添加到每个文件上,因为我们可能需要为每个文件多次运行脚本。否则,我将不得不手动复制脚本到每个工作表,这需要时间。
更新了。删除了将Excel文件转换为Google Sheets的部分,因为我在另一个帖子中找到了答案。此处.
根据我从你的帖子中了解到的情况,你的问题是关于如何将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作为参数传给他,然后就可以使用该脚本的 (记得把这个脚本封装在一个函数中).
我希望这对你有帮助。如果你还需要什么,或者你有什么不明白的地方,请告诉我 :)