【问题标题】:Google Sheets batch rename files with a script?谷歌表格用脚本批量重命名文件?
【发布时间】:2021-12-30 15:26:41
【问题描述】:

我的工作表中有很多数字,我想重命名 100 多个不同的文件。例如,我的工作表中编号为 1 的数字我想将其重命名为 01.png。我已经尝试过搜索和替换功能,但是如果我想在 x 个工作表上多次执行此操作,这非常耗时...这里提供了更好更快的解决方案吗?

我已经尝试过替换功能:

=REPLACE(A1;1;3;"_01.PNG")

它给了我正确的输出文件名,但我必须选择数千个数字 1。 如何选择所有数字 1(文本格式)并设置此功能?

【问题讨论】:

标签: google-apps-script google-sheets google-sheets-formula rename


【解决方案1】:

编辑:

试试这个:

function rename() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn()); //this will automatically select all data in your active sheet starting from row 2
  var data = range.getValues(); //get the values, this will return 2D array

  for(var i = 0; i < data.length; i++) {
    for(var j = 0; j < data[0].length; j++){
      data[i][j] = "_" + pad(data[i][j]) + ".PNG" //replace each data with "_NUMBER.PNG"
    }
  }
  range.setValues(data);
}

function pad(n) {
    return (n < 10) ? ("0" + n) : n;
}

样本数据:

输出:

参考资料:

【讨论】:

  • 谢谢,但我需要它用于工作表中的所有列。我该如何设置?选择另一列,对我来说没问题,但我怎样才能全选?
  • @sreeze - 查看我的更新答案。也请不要使用答案来为您的帖子添加信息。您可以随时使用编辑按钮更新您的帖子。
【解决方案2】:

自定义代码,它只更改了第一列 (A) 中的名称。我必须在这里改变什么?谢谢。

function rename() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheets(); 
  
  sh.forEach(sheet => { 
    var range = sheet.getRange("A2:F301"); //get all the cells from my sheet
    var data = range.getValues(); 
    for(var i = 0; i < data.length; i++) 
    {
      data[i][0] = "_" + pad(data[i][0]) + ".PNG" //replace each data with "_NUMBER.PNG"
    }
    range.setValues(data); 
  })

}

function pad(n) {
    return (n < 10) ? ("0" + n) : n;
}

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2016-10-08
相关资源
最近更新 更多