繁体   English   中英

使用应用脚本获取给定谷歌表格中单元格值的单元格

[英]Getting the cell given the cell value in google sheets using app script

我正在尝试编写一个脚本来跟踪谷歌表格中的付款日期(付款前三天显示不同的颜色(FontColor 或背景),付款当天显示另一种颜色,付款日期后显示完全不同的颜色。我'如果有人知道如何使用这些值来获取单元格名称并使用它来更改 FontColor 或者如果有更好的解决方案,我将不胜感激 这是我的谷歌表 [![在此处输入图片描述][1]] [1]

这是我为将日期放入列表而编写的代码

function myFunction() {
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  let lastRow = spreadsheet.getLastRow();
  let lastCol = spreadsheet.getLastColumn();

  var dataRange = spreadsheet.getActiveSheet().getRange(2, 11, lastRow, lastCol)
  dataRange.setFontColor("green")
  var data = dataRange.getDisplayValues();
  let dates=[];

  for (let i=0; i < dates.length; i++ ) {
  // console.log(dates[i])
  if (dates[i] === new Date().toLocaleDateString()) {
    dataRange.setBackground('pink')
  } else if (dates[i]) {
    // do sth
  } else {
    // maintain the current state
  }
 }
}

它需要与脚本一起使用吗? 使用条件格式会更快、更容易并且不断上传。 在此处输入图像描述

您可以将其应用于整个工作表或特定范围。 使用此自定义公式(将 A1 更改为范围左上角的公式)=if(A1="",FALSE,(A1 - Today()) < 0) 在此处输入图像描述

确保以正确的顺序设置这些条件(在这些情况下,最好是过去的日期、实际日期和最近的未来日期)。 像这样:

在此处输入图像描述 在这里你有一个链接可以玩: https://docs.google.com/spreadsheets/d/1zhEFRQwOyAYQwXfv5lYTjI7B-6fIfz1rgdCt3MGvzmI/edit?usp=sharing

付款追踪器

function paymentTracker() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();
  const rg = sh.getRange(2, 11, sh.getLastRow() - 1, sh.getLastColumn() - 10);
  rg.setFontColor("black")
  const vs = rg.getDisplayValues();
  const d = new Date();
  //Logger.log('y: %s,m: %s,d: %s', d.getFullYear(), d.getMonth(), d.getDate());
  const dt = new Date(d.getFullYear(), d.getMonth(), d.getDate());
  const dtv = dt.valueOf();
  const dt3 = new Date(d.getFullYear(), d.getMonth(), d.getDate() + 3);
  const dt3v = dt3.valueOf();
  vs.forEach((r, i) => {
    let ds = r.map(ds => {
      let t = ds.split('/');
      //Logger.log(JSON.stringify(t))
      let v = new Date(Number(t[2]), Number(t[1]) - 1, Number(t[0])).valueOf();
      let diff3 = dt3v - v;
      if (dt3v == v) {
        return "purple";
      } else if (dtv == v) {
        return "green";
      } else {
        return "pink";
      }
    });
    sh.getRange(i + 2, 11, 1, ds.length).setBackgrounds([ds]);
  })
}

暂无
暂无

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

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