数组用于Google工作表的清晰内容



我有很多谷歌表格,它们被分成了特定的文件夹。我按文件夹有10张。每个表格有12个电子表格。它们都是一样的。我需要擦除特定的单元格并将值设置为所有电子表格的其他单元格,相同的范围,并且我可以使用数组代码仅在电子表格中执行此操作。我需要的是一个数组代码运行文件夹,一种方式来运行我的代码,并做所有的工作为120电子表格一次。

我试图增强这段代码,但它不起作用,当我运行这段代码时,什么也没有发生,也没有错误消息。

function apagarTUTMOD2(){
var folder = DriveApp.getFolderById("folder ID");
var p = folder.getFiles();
for (i in p){
var sheet = p[i].getSheets();
for(j in sheet) {
sheet[j].getRange('F5:F164').clearContent(); //clear this range
sheet[j].getRange('F105:F164').setValue("X") // write "X" into this range
}
}
}

我认为一些关于文件夹的内容是错误的,但我不知道如何修复它。谢谢你的帮助。

我相信你的目标如下。

  • 您想从特定文件夹中检索Google电子表格。
  • 有120个谷歌电子表格,每个电子表格有12个表格。
  • 你想要清除范围"F5:F164"
  • 您希望将X的值设置为"F105:F164"
  • 你想用Google Apps Script实现这个。

修改点:

  • 在您的脚本中,folder.getFiles()返回FileIterator。本例中使用next()方法检索文件对象。
  • "for"的工艺成本略高于forEach。Ref
  • 为了在电子表格服务中使用FileIterator中的文件对象,您可以使用SpreadsheetApp.open()

当上面的点被反射到脚本中时,它变成如下所示:

修改脚本1:

function apagarTUTMOD2() {
var folder = DriveApp.getFolderById("folder ID");
var p = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
while (p.hasNext()) {
SpreadsheetApp.open(p.next()).getSheets().forEach(sheet => {
sheet.getRange('F5:F164').clearContent(); //clear this range
sheet.getRange('F105:F164').setValue("X") // write "X" into this range
});
}
}

修改脚本2:

a way to run my code and do all the work for the 120 spreadsheets at once.,我担心上述脚本是否可以直接为您的实际情况运行。因此,在这个回答中,我还想提出以下脚本。下面的脚本使用Sheets API和Drive API。当使用这些api时,过程成本将能够降低。

在使用此脚本之前,请在高级Google服务中启用Sheets API和Drive API。

function apagarTUTMOD2_2() {
const folderId = "folder ID";  // Please set the folder ID.
const files = Drive.Files.list({maxResults: 1000, q: `'${folderId}' in parents and trashed=false and mimeType='${MimeType.GOOGLE_SHEETS}'`}).items;
files.forEach(({id}) => {
const sheetIds = Sheets.Spreadsheets.get(id, {fields: "sheets(properties(sheetId))"}).sheets;
sheetIds[0].properties.sheetId
const requests = sheetIds.flatMap(o => [
{repeatCell:{range:{sheetId:o.properties.sheetId,startRowIndex:4,endRowIndex:164,startColumnIndex:5,endColumnIndex:6},cell:{userEnteredValue:{}},fields:"userEnteredValue"}},
{repeatCell:{range:{sheetId:o.properties.sheetId,startRowIndex:104,endRowIndex:164,startColumnIndex:5,endColumnIndex:6},cell:{userEnteredValue:{stringValue:"X"}},fields:"userEnteredValue"}}
]);
Sheets.Spreadsheets.batchUpdate({requests: requests}, id);
});
}

引用:

  • getFiles()类文件夹
  • FileIterator
  • <
  • 表API/gh><
  • 驱动API/gh>

最新更新