繁体   English   中英

Google 表格 clearcontent 的数组

[英]Array for Google Sheet clearcontent

我有很多谷歌表分为特定的文件夹。 我有 10 张按文件夹。 每张表有 12 个电子表格。 他们都是一样的。 我需要擦除特定单元格并将值设置为所有电子表格的其他单元格,相同的范围,我可以只在工作表中使用数组代码来执行此操作,对于 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 个 Google 电子表格,每个电子表格有 12 张。
  • 您想清除所有工作表中的“F5:F164”范围。
  • 您希望将X的值放在所有工作表中的“F105:F164”范围内。
  • 您想使用 Google Apps 脚本实现此目的。

修改点:

  • 在您的脚本中, folder.getFiles()返回 FileIterator。 在这种情况下, next()方法用于检索文件 object。
  • “for in”的过程成本比forEach要高一点。 参考
  • 为了将来自 FileIterator 的文件 object 与电子表格服务一起使用,您可以使用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. ,我担心上面的脚本是否可以通过一次运行直接适用于您的实际情况。 所以在这个答案中,我还想提出以下脚本。 以下脚本使用表格 API 和驱动器 API。 当使用这些 API 时,将能够降低流程成本。

在使用此脚本之前, 请在高级 Google 服务中启用表格 API 和驱动器 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);
  });
}

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM