首页 > 解决方案 > 替换 Sheet 中的 Reference DOCS 文件名。文件

问题描述

这是我的例子:

Sheet file with ID:
1uxEy8cPkNQVBVAFSHPBhvq0aRgRVZ0z2_I1AxK0gcuI

有 2 列: A 列:包含要替换的单词,例如:

“A1”:Le Minh Hai,“A2”:ABC,“A3”:HAIBA

B 列:包含您要替换的单词,例如:

“B1”:阮黎明,“B2”:CDE,“B3”:BAAAA

有一个文件名为

这是Le Minh Hai的档案

我希望将其更改为:

这是 Nguyen Le Minh 的档案

如果有一个不同名称的文件

这是ABC文件

它会变回

这是一个 CDE 文件

其他文件也一样

代码:

function getNewestFileInFolder() {
  var arryFileDates,file,fileDate,files,folder,folders,
      newestDate,newestFileID,objFilesByDate;

  folders = DriveApp.getFoldersByName('bvm-hd');  
  while (folders.hasNext()) {
    folder = folders.next();
    files = folder.getFilesByType("application/vnd.google-apps.document");
    while (files.hasNext()){
      file = files.next();
  var newestFileID = file.getId();
  var currentDoc = DocumentApp.openById(newestFileID);
  var ss = SpreadsheetApp.openById('1t9T5FWedPLFcQ6wqcx4gGRHrrpldZHcLhgBJR0JbrPI');//ID sheet find and replace
  SpreadsheetApp.setActiveSpreadsheet(ss);
  SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Trang tính1');
  var dongcuoi= sh.getLastRow();
  var dc = dongcuoi +1;
  var doc = DocumentApp.openById(newSp.getId());
  var rgtxt = doc.getName();
  var rgrep = ss.getSheets()[0].getRange("A1:B"+dc);
  var repA = rgrep.getValues().filter(r => r.every(c => c.toString()));
  repA.forEach(e => rgtxt.replaceText(...e));      
  }
    }
  
}

标签: google-apps-scriptgoogle-docs

解决方案


我相信你的目标如下。

  • 您想使用电子表格重命名特定文件夹中的 Google 文档的文件名。
  • 您想要将现有文件名(包括“A”列的值)更改为“B”列的值。
  • 例如,当文件名是 时This is the file of Le Minh Hai,您想将其更改为This is Nguyen Le Minh's file.

在这种情况下,下面的修改脚本怎么样?

修改后的脚本:

function getNewestFileInFolder() {
  var ss = SpreadsheetApp.openById('1t9T5FWedPLFcQ6wqcx4gGRHrrpldZHcLhgBJR0JbrPI');
  var sheet = ss.getSheetByName('Trang tính1');
  var values = sheet.getDataRange().getValues();
  var folders = DriveApp.getFoldersByName('bvm-hd');
  while (folders.hasNext()) {
    var folder = folders.next();
    var files = folder.getFilesByType("application/vnd.google-apps.document");
    while (files.hasNext()) {
      file = files.next();
      var filename = file.getName();
      var check = values.filter(([a]) => filename.includes(a));
      if (check.length > 0) {
        file.setName(filename.replace(check[0][0], check[0][1]));
      }
    }
  }
}
  • 从您的脚本中,我担心可能存在文件夹名称为bvm-hd. 所以我使用 while 循环来检索文件夹。
  • 可以通过一次调用从电子表格中检索这些值。所以在这个修改后的脚本中,这个脚本被移到了循环之外。
  • 为了更改文件名,您可以使用Class File 的getNamesetName

参考:


推荐阅读