2017年6月1日木曜日

スプレッドシートへの値書き込み

前回まででとりあえずURLからSpreadsheetを開くことができた。

前回までのおさらい
SpreadsheetApp.openByUrlに、アクセス対象のスプレッドシートのURLを渡して、Spreadsheetオブジェクトを得た。


さて、値を突っ込むのはどこからだろうと、Spreadsheetオブジェクトのドキュメントを眺めてみる。

パッと見たところ、それらしいMethodは存在しない。

ま、そりゃそうか。まだ対象物(シートとか位置とか)にたどり着いてないのに、いきなり値突っ込むものがあっても、そりゃどうなのって話よね。


ということで、以下推論を立ててドキュメントを探ってみることに。


  • Spreadsheetオブジェクトはスプレッドシートのファイル的扱い
  • ということは、次は対象シートのオブジェクトを得る必要がある
  • さらにそのシート内の場所に値を入れる指定をする


最初のは前回で取得できているものなので、2番目のシートから探ってみることに。


1. シートの取得

Spreadsheetオブジェクトのドキュメントを眺めると、そのままの名前のgetSheetsなるものを発見。

中身を見てみると...



なんかやだ...。
なんかっていうか、getActiveSpreadsheetとか噛んでるのがヤダ。
だってもうSpreadsheetオブジェクトは持ってるわけだし。

ということで、このサンプルは変えながら使わなきゃいけなそうということがよくわかりました。ありがとう。

でもまぁここまでの推論は正しそうな予感。
ReturnにSheet[]のオブジェクト配列を得ることができそう。


2. セルの値更新 (場所の指定)

取得することができそうな、Sheetオブジェクトのドキュメント内を漁ってみる。

clearとか、シート全体に対する処理で間接的にセルに影響はでそうになってきたね。
うんうん。

ただ、まだvalueをsetするようなMethodはでてこない。
代わりに目につくようになったRangeオブジェクト。

ということは、Rangeで範囲を取得して、そこに値をセットする構造と推測。

getRange(row, column)というイカにもなMethodがあるのでチラ見。


行(row)と列(column)を指定して、Rangeオブジェクトを取得して、普通に値の参照(getValues)してる雰囲気。よさげな感じ。


3. セルの値更新 (本体)

ということで、Rangeオブジェクトをさらにチラ見。
ようやく出会えたsetValue(value)。会いたかったよ。


サンプルはまたgetActiveSpreadSheet使っててアレだけど、まぁ使い方はわかった。
概ね予想通り。



んじゃ、前回までのプログラムと合わせて適当に実行してみるかな。
作ったコードは組み合わせだけど以下になったので参考まで。(URLは適宜変更ください)



 var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/xxxxxx');

 var sheet = ss.getSheets()[0];

 var cell = sheet.getRange("B2");
 cell.setValue(100);




指定したスプレッドシートのB列2行目に[100]が無事書き込まれました。
うんうん。素直でよろしい。


これで基本中の基本はわかってきた感じ。

んじゃ今度は当初目標設定にあるHTMLとこのプログラムを結びつけるところへいってみようかな。








0 件のコメント:

コメントを投稿