google-apps-script - 应用脚本条件格式按名称应用于工作表

标签 google-apps-script google-sheets

我一直在尝试制作一个 Google App Script 代码,如果它有像​​“L”这样的特定文本,它会突出显示单元格。
我做了一个下面的代码,但它不工作,当我运行这个没有错误出现。我不知道是什么问题。
你能看看它吗,请问为什么它不起作用。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
  var range = sheet.getRange("C:AG");
  if (range == 'L') {
        ss.range.setBackgroundColor('#ea9999');
  } 
}

最佳答案

代码问题:
不得不提的三件事:

  • rangerange对象,而不是字符串。在 if您正在比较 range 类型的对象的条件带有 string 类型的对象.您需要使用 getValue获取 range 的值对象,然后将其与字符串 L 进行比较.
  • 这段代码需要很长时间才能完成,因为您有大量的单元格要检查,而且您正在迭代地使用 GAS API 方法。如 Best Practices 中所述使用像 getValues 这样的批处理操作效率更高,
    getBackgroundssetBackgrounds .
  • 您可以进行的另一个改进是使用 getLastRow限制您的范围的行限制,因为您正在寻找非空值。没有理由在包含内容的最后一行之后检查空单元格。

  • Google Apps 脚本解决方案:
    function formatting() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
      const range = sheet.getRange("C1:AG"+sheet.getLastRow());
      const values = range.getValues();
      const bcolors = range.getBackgrounds();
      const new_bcolors = values.map((r,i)=>r.map((c,j)=>c=='L'?'#ea9999':bcolors[i][j]))
      range.setBackgrounds(new_bcolors)
     }
    
    谷歌表格解决方案:
    另一个想法是在 Google 表格中创建条件格式:
    enter image description here
    并使用您的十六进制代码指定自定义颜色:
    enter image description here
    JavaScript 引用:
  • map
  • ternary operator
  • 关于google-apps-script - 应用脚本条件格式按名称应用于工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66100645/

    相关文章:

    google-apps-script - 如果尚不存在,请在云端硬盘中创建新文件夹

    google-apps-script - ArrayFormula 破坏了 getLastRow() 功能。可能的解决方法?

    javascript - 如何从附加组件中轮询 Google 文档

    arrays - 将对角线转置为 Google 电子表格中的行?

    Java Google 表格 API。将数据附加到特定工作表

    javascript - Firebase 应用程序脚本 getData() optQueryParameters 出现整数错误

    amazon-web-services - Google 脚本 HMAC 加密的二进制输出

    javascript - GAS Google Script - 如何复制值并粘贴到另一个单元格中

    google-apps-script - 如何触发引用单元格的onEdit事件?

    javascript - 如果返回的单元格为空,则删除行