Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GoogleSheets使用脚本检查单元格是否有边框_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript GoogleSheets使用脚本检查单元格是否有边框

Javascript GoogleSheets使用脚本检查单元格是否有边框,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试向报表中添加自定义格式,以便任何使用它的品牌都可以更改其品牌颜色 我目前有细胞的颜色变化,但我只希望这些细胞改变颜色,如果他们有一个边界。因此,它使用边界作为一个和检查 这是当前版本,如果单元格与颜色匹配,将更改单元格。但是,如果将它们更改为白色,然后您要更改为另一种颜色,则整个纸张将更改颜色。所以我在考虑如何使一组单元格唯一,以便脚本只对这些单元格执行操作 function colorReplace() { var spread = SpreadsheetApp.openByUr

我正在尝试向报表中添加自定义格式,以便任何使用它的品牌都可以更改其品牌颜色

我目前有细胞的颜色变化,但我只希望这些细胞改变颜色,如果他们有一个边界。因此,它使用边界作为一个和检查

这是当前版本,如果单元格与颜色匹配,将更改单元格。但是,如果将它们更改为白色,然后您要更改为另一种颜色,则整个纸张将更改颜色。所以我在考虑如何使一组单元格唯一,以便脚本只对这些单元格执行操作

function colorReplace() {
  var spread = SpreadsheetApp.openByUrl('SPREADSHEET_URL');
  var doc = spread.getSheetByName("DASHBOARD_NAME");
  var settings = spread.getSheetByName("Settings");

  // get all the existing active sheet background colours
  var cells = doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).getBackgrounds();
  var rows = cells.length;
  var cols = cells[0].length;

  var primary = doc.getRange('E2').getBackground(); // Get background of ref cell
  var primaryReplace = settings.getRange('B2').getValue(); // Get background from cell in settings
  var border = settings.getRange('B5').getValue(); // Get border colour from cell in settings

  //Logger.log(primary);
  //Logger.log(primaryReplace);

Boolean for those cells which have a border

  // iterate accross
  for (var i = 0; i < rows; i++){
    for (var j = 0; j < cols; j++){
      if (cells[i][j] == primary && cells[i][j] == check ){ 

// if cells equal cell colour and they have a border. Possibly could just change this to if cells have a border?

            cells[i][j] = primaryReplace; // Cell Colour Change
          }
        }
      }
      // update backgound colours
      doc.getRange(1, 1, doc.getLastRow(), doc.getLastColumn()).setBackgrounds(cells);
    }
函数colorReplace(){
var spread=SpreadsheetApp.openByUrl(“电子表格URL”);
var doc=spread.getSheetByName(“仪表板名称”);
var settings=spread.getSheetByName(“设置”);
//获取所有现有的活动工作表背景色
var cells=doc.getRange(1,1,doc.getLastRow(),doc.getLastColumn()).getBackgrounds();
var行=cells.length;
var cols=单元格[0]。长度;
var primary=doc.getRange('E2').getBackground();//获取ref单元格的背景
var primaryReplace=settings.getRange('B2').getValue();//从设置中的单元格获取背景
var border=settings.getRange('B5').getValue();//从设置中的单元格获取边框颜色
//Logger.log(主);
//Logger.log(primaryReplace);
有边框的单元格的布尔值
//迭代存取
对于(变量i=0;i
我在range类中没有看到任何get border命令。也许您可以将numberformat设置为某个唯一的字符串,以标识哪些单元格发生了颜色变化。numberformat可以是2d数组,因此可以通过循环索引读取,并将其设置回更改后的状态colors@cooper谢谢你的回复。我查看了文档,发现了一种检查边界的方法。谷歌幻灯片有用于边框的getFillColor。我可能想尝试添加一些独特的东西,就像你提到的,但我想我会看看是否有人有针对边境的运气。同时,我将尝试您提到的格式。您也可以尝试将背景颜色设置为某种奇怪的颜色。我在range类中没有看到任何get border命令。也许您可以将numberformat设置为某种唯一的字符串,以识别哪些单元格发生了颜色更改。numberformat可以是2d数组,因此可以通过循环索引读取,并将其设置回更改后的状态colors@cooper谢谢你的回复。我查看了文档,发现了一种检查边界的方法。谷歌幻灯片有用于边框的getFillColor。我可能想尝试添加一些独特的东西,就像你提到的,但我想我会看看是否有人有针对边境的运气。我会尝试一下你刚才提到的格式,你也可以试着把背景颜色设置成一些奇怪的颜色。