copyTo不带正确的数据

时间:2017-09-17 13:28:15

标签: google-apps-script google-sheets

所以我想在Google表格中运行一个脚本。我有两张纸,其中一张是包含我所有数据的主列表,另一张是我用来过滤结果的工作表,当我想查看特定的日期/类别时。我通过在我的过滤表中有三个单元格来完成此操作,我将填写信息以与主列表匹配,然后使用一个可以复制数据的按钮。这是我的代码:

function filter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Total");
  var month = ss.getSheetByName("Filter").getRange("A2").getValue();
  var payment = ss.getSheetByName("Filter").getRange("B2").getValue();
  var category = ss.getSheetByName("Filter").getRange("C2").getValue();


  for(var i = 1; i < 200; i++)
  {
  var p = s.getRange(i, 5);
  var c = s.getRange(i, 6);  
  var m = s.getRange(i, 7);

   if( p.getValue() == payment && c.getValue() == category && m.getValue() 
== month){
     var targetSheet = ss.getSheetByName("Filter");
      var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
      s.getRange(i, 1, 1, 7).copyTo(target);
   }


  }
}

在我的if语句中使用&&条件导致没有任何内容出现。在出现的所有内容中使用||条件结果。我似乎无法弄清楚如何制作它,以便我可以只按一个类别或所有类别进行排序。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要使用短路比较器(use PHPUnit\Framework\TestCase; final class RemoveNonUniqueItemsTest extends TestCase { public function testEmptyArrayReturnEmptyArray() { $uniqueItems = Remover::keepOnlyUnique([]); $this->assertEquals( [], $uniqueItems->asArray() ); } public function testArrayWithUniqueKeysReturnSameArray() { $uniqueItems = Remover::keepOnlyUnique([1,2,3]); $this->assertEquals( [1,2,3], $uniqueItems->asArray() ); } public function testCountNumnerOfItemsAValueAppears() { $uniqueItems = Remover::keepOnlyUnique([1,2,3,3]); $this->assertEquals( 2, $uniqueItems->items(3) ); } public function testRemoveValuesThatExistsTwice() { $uniqueItems = Remover::keepOnlyUnique([1,2,3,3]); $this->assertEquals( [1,2], $uniqueItems->asArray() ); } } final class Remover { private $items; private function __construct(array $items) { $this->items = $items; } public static function keepOnlyUnique(array $items) : Remover { return new self($items); } public function asArray() : array { $newArray = []; foreach ($this->items as $itemKey => $itemValue) { if ($this->items($itemValue) == 1) { $newArray[] = $itemValue; } } return $newArray; } public function items(int $value) : int { $count = 0; foreach ($this->items as $itemKey => $itemValue) { if ($itemValue == $value) { $count++; } } return $count; } } &&)来获取所有3个值。如果条件不满足,则退出脚本。您还需要通过对括号中的项目进行分组来清理逻辑测试。

例如,

||

返回值&#34;九月&#34; &#34; Cash&#34;只要。 &#34;分类&#34;是无关紧要的。

使用

if(p.getValue() == payment && m.getValue() == month)
如果付款值与匹配,如果付款类别匹配,

将返回一行,无论月份如何。

使用括号打破条件会有所帮助。此外,重新考虑使用短路脚本的比较器。 This post describing the difference可能有帮助。