Google表格如果单元格背景颜色为true,则获取单元格值和列标题值,并将它们作为字符串连接

时间:2017-05-25 14:36:43

标签: google-apps-script google-sheets

这是我在这里的第一篇文章,很抱歉,如果我的问题不清楚。

我想使用Google表格发送个性化电子邮件,但首先我需要创建一个脚本。下面是我的表的一个空例子。

我需要此电子表格检查行中是否有黄色背景的单元格。如果此条件为真,则选择列中黄色单元格的标题值,并将此值作为字符串放入变量中。然后选择此黄色单元格的值并将此值连接到同一个变量。

黄色单元格的每一行的相同情况

Empty example

实施例: 我想检查Mike Doe行的这个条件。有两个黄色细胞F2和G2。首先,如果它找到了F2单元格,则应选择标题值(04.2017)并将其作为字符串连接到变量。然后应该选择单元格F2(50)的值,并将其加入相同的变量。目前,我们的变量值=" 04.2017 - 50"。接下来应检查同一行中的另一个黄色单元格(G2)并执行完全相同的操作。所以在这一行的末尾,变量应该有值=" 04.2017 - 50,05.2017 - 50"。当脚本完成检查此行时,应将此变量的整个值放在Message单元格中。

下面是一个空的例子。

https://docs.google.com/spreadsheets/d/1ZmVaEw6QS0V1A401U9l6wi2ppWfylKU74eTK4bxZlOU/edit?usp=sharing

我希望,一切都很清楚。如果有人帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:1)

好的,所以这是我在StackOverflow上的第一个答案..希望它有帮助=)

请注意,下面只有在背景是完全相同的黄色#ffff00时才有效..我建议您不要使用颜色作为事件发生的条件,但下面的内容对您有用..

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Arkusz1');
  var range = sheet.getDataRange();
  var formatting = range.getBackgrounds();
  var data = range.getValues();
   for(var y = 1; y < data.length; ++y){
    var message = '';
    for(var x = 0; x < data[y].length; ++x){
      if(formatting[y][x] == '#ffff00'){
       /*/
       Because your header contains a Date Object, it will show as for example Sat Apr 01 2017 00:00:00 GMT+0200 (CEST) 
       I Guess you want it to show exactly as it shows in your spreadsheet? Then the below two lines will do:
       /*/
       var header = new Date(data[0][x]);
       header = header.getMonth() + 1 + '.' + header.getFullYear();
       message += 'Header: ' + header + ', Value: ' + data[y][x] + ' ';
      };
     data[y][7] = message
    }
  }
  range.setValues(data);
}