2015年10月27日火曜日

Google App Script - SheetUtil

スプレッド・シートを簡単に扱う為のクラスをライブラリに纏めてみた。

Project Key: MTbsvdt4qqdldpYH52zqe5q7mwghSyEXE

  
  // 1: Shell 簡単なシート操作 get/set/clear
  var shell = SheetUtil.Shell.attach('Sheet01');
  Logger.log(shell.get("B2"));
  
  
  // 2: Pipe 2つのシート間でのデータ・書式のコピー copy(Format|Contents|Values)
  var pipe = SheetUtil.Pipe.from('Sheet01').to('Sheet02');
  pipe.copy("B1 to B2");

  // 纏めてコピー
  ["C1 to D1", "C10 to D10", "B12 to D12"].forEach(pipe.copyContents.bind(pipe));

  
  // 3: NamedAccessor セルに名前付きでアクセス getXXX/setXXX
  var InfoClass = SheetUtil.NamedAccessor.generate({
    Name: "B2",
    Age: "C2",
  });
  var info = new InfoClass('Sheet01');

  // プロパティでアクセス
  info.Name = "test"; // "B2" へ値を設定
  Logger.log(info.Name);

  // 関数呼び出し
  info.setName("test02");
  Logger.log(info.getName());


  // 4: ResourceManager A:key, B:Value のシート"Resources"を用意。
  var rc = SheetUtil.ResourceManager.load("Resources");
  Logger.log(rc.AppVersion);

  • 他のスプレッド上のシートを指定するには、シート名の前に接頭子で指定。
    • GRID_ID$SHEET_NAME のように、"$" で区切ります。
      (これはgoogleのAPIではなく、このライブラリの仕様)
  •  
  • SheetUtil.Pipe で、他のシートの値をコピーするには copyValues() を使います。
    • 異なるスプレッドシート間での範囲のコピーには制限がある為、
      内部では、setValues/getValuesで値をコピー。

2 件のコメント: