GAS 扫描文件夹中的所有 spreadsheet 并更改特定的单元格值和 sheet 名称?
GAS Scan all spreadsheets in folder and change a specific cell value and sheet name?
function getAllSheetsInFolder () {
var folder = DriveApp.getFolderById("ID");
var contents = folder.getFiles();
Logger.log("file length: " + contents.length);
var file;
var data;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Class Data")
sheet.clearContents();
var numOfFiles = contents.length;
for (var i = 0; i < numOfFiles; i++) {
file = contents[i];
Logger.log("count: " + i);
//Reset to null on every iteration
var onecell = null;
var theRange = null;
var theFileType = file.getFileType();
Logger.log("theFileType: " + theFileType);
if (theFileType==DocsList.FileType.SPREADSHEET) {
var sheet = SpreadsheetApp.open(file).getSheets()[0];
var cell = sheet.getRange(2,7);
cell.setValue('RTI')
};
}
}
}
我想编写一个 GAS 来扫描文件夹中的所有传播sheet,并更改每个传播sheet 中单元格 (G2) 的值。可以设置扫描文件夹和子文件夹中的所有spreadsheet吗?或者只是每个 spreadsheet 在一个特定的文件夹中。
我还希望在每个传播sheet 中更改第 4 个 sheet 的名称。在我开始修改一些代码之前,我只是想看看你们是否认为这是可能的。
这里有一些代码可以获取对文件夹的引用,并循环遍历该文件夹以查找电子表格文件。
function getAllSheetsInFolder () {
var folder = DriveApp.getFolderById("Your Folder ID");
Logger.log('folder: ' + folder);
var sheetFiles = folder.getFilesByType("application/vnd.google-apps.spreadsheet");
Logger.log("sheetFiles.hasNext(): " + sheetFiles.hasNext());
while (sheetFiles.hasNext()) {
var file = sheetFiles.next();
var theFileType = file.getMimeType();
Logger.log("theFileType: " + theFileType);
var ssID = file.getId();
Logger.log('ssID: ' + ssID);
var thisSS = SpreadsheetApp.openById(ssID);
var sheet = thisSS.getSheets()[0];
var cell = sheet.getRange(2,7);
cell.setValue('Test Cell Set')
};
};
此代码使用 DriveApp
的组合来获取特定文件夹中的电子表格文件列表,然后使用 SpreadsheetApp
实际打开电子表格文件,并将值写入单元格。
DocsList
Class 现已弃用。我的原始代码使用 DocsList
而不是 DriveApp
,但它们非常不同。 DriveApp
可以获取文件夹,文件列表,设置和获取其他文件信息,但是DriveApp
不能打开电子表格文件。您必须使用 SpreadsheetApp
打开电子表格文件。所以代码首先要获取文件夹,然后是文件夹中所有电子表格的列表,以及每个电子表格的ID。然后按 ID 打开电子表格。
function getAllSheetsInFolder () {
var folder = DriveApp.getFolderById("ID");
var contents = folder.getFiles();
Logger.log("file length: " + contents.length);
var file;
var data;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Class Data")
sheet.clearContents();
var numOfFiles = contents.length;
for (var i = 0; i < numOfFiles; i++) {
file = contents[i];
Logger.log("count: " + i);
//Reset to null on every iteration
var onecell = null;
var theRange = null;
var theFileType = file.getFileType();
Logger.log("theFileType: " + theFileType);
if (theFileType==DocsList.FileType.SPREADSHEET) {
var sheet = SpreadsheetApp.open(file).getSheets()[0];
var cell = sheet.getRange(2,7);
cell.setValue('RTI')
};
}
}
}
我想编写一个 GAS 来扫描文件夹中的所有传播sheet,并更改每个传播sheet 中单元格 (G2) 的值。可以设置扫描文件夹和子文件夹中的所有spreadsheet吗?或者只是每个 spreadsheet 在一个特定的文件夹中。
我还希望在每个传播sheet 中更改第 4 个 sheet 的名称。在我开始修改一些代码之前,我只是想看看你们是否认为这是可能的。
这里有一些代码可以获取对文件夹的引用,并循环遍历该文件夹以查找电子表格文件。
function getAllSheetsInFolder () {
var folder = DriveApp.getFolderById("Your Folder ID");
Logger.log('folder: ' + folder);
var sheetFiles = folder.getFilesByType("application/vnd.google-apps.spreadsheet");
Logger.log("sheetFiles.hasNext(): " + sheetFiles.hasNext());
while (sheetFiles.hasNext()) {
var file = sheetFiles.next();
var theFileType = file.getMimeType();
Logger.log("theFileType: " + theFileType);
var ssID = file.getId();
Logger.log('ssID: ' + ssID);
var thisSS = SpreadsheetApp.openById(ssID);
var sheet = thisSS.getSheets()[0];
var cell = sheet.getRange(2,7);
cell.setValue('Test Cell Set')
};
};
此代码使用 DriveApp
的组合来获取特定文件夹中的电子表格文件列表,然后使用 SpreadsheetApp
实际打开电子表格文件,并将值写入单元格。
DocsList
Class 现已弃用。我的原始代码使用 DocsList
而不是 DriveApp
,但它们非常不同。 DriveApp
可以获取文件夹,文件列表,设置和获取其他文件信息,但是DriveApp
不能打开电子表格文件。您必须使用 SpreadsheetApp
打开电子表格文件。所以代码首先要获取文件夹,然后是文件夹中所有电子表格的列表,以及每个电子表格的ID。然后按 ID 打开电子表格。