脚本为背景行列着色

时间:2015-03-05 15:35:49

标签: google-apps-script

我尝试根据值分配单元格颜色。我从电子表格中导入范围。我看看每个值。如果它是1然后我想让单元格颜色为红色等。使表格工作正常,但颜色搞砸了。无法看到我的错误。

<? var data = getTheTable(); var lastRow = data.length-1; var      rowsToShow=3; var mcolor='white';?>
<table class="center">
<tr>
    <th>Name</th>
    <th>Comment</th>
  </tr>
  <? for (var i = lastRow; i >(lastRow-rowsToShow); i--) { ?>
    <tr>

      <? for (var j = 0; j < data[i].length; j++) { 
         if (data[i][j]=='1'){mcolor='red';}
        if (data[i][j]=='2'){mcolor='yellow';}
        if (data[i][j]=='3'){mcolor='green';}
        else {mcolor='blue';}
        ?>

        <td> 
        <span style="background-color:<?= mcolor?>;">
        <?= data[i][j] ?></span> </td>
      <? } ?>
    </tr>
  <? } ?>
</table>

1 个答案:

答案 0 :(得分:0)

您需要在此处使用“else”语句(或switch语句)。如果没有else,则会检查每个ifs,即使前一个ifs匹配。所以,即使你匹配数据[i] [j] =='1',你仍然会得到mcolor ='blue',因为你的最后一个if。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else

  <? for (var j = 0; j < data[i].length; j++) { 
        if (data[i][j]=='1'){mcolor='red';}
        else if (data[i][j]=='2'){mcolor='yellow';}
        else if (data[i][j]=='3'){mcolor='green';}
        else { mcolor='blue'; }

      ...

通常,如果您发现自己连续使用了一堆if / else语句,那么Switch / Case是一个更清晰的选项:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

switch(data[i][j]){
    case '1':
        mcolor='red';
        break;
    case '2':
       mcolor='yellow';
       break;
    case '3':
        mcolor='green';
        break;
    default:
        mcolor='blue';
}