GASで別のスプレッドシートを開く・書き込み・コピーする

今回はGASで別のスプレッドシートを開いたり書き込んだり、コピーしたりする方法っていうのをやっていきたいと思う。GAS使いこなせればスプレッドシートやGmailなどGoogle系のサービスもっと使いこなすことができていいですもんね。まあ今回はスプレッドシートのちょっとしたこと、やっていこう。

GASで別のスプレッドシートを開く方法

GASで別のスプレッドシートを開く方法なんだけど、この別ってなんだろう?今開いているのとは別のスプレッドシートを開きたいっていうことだろうか。GASではいくつかの方法でスプレッドシートを開く方法があると思う。

  • アクティブなスプレッドシートを開く・・・getActiveSpreadSheet()
  • URLを指定してスプレッドシートを開く・・・openByUrl()
  • idを指定してスプレッドシートを開く・・・openById()

今開いているスプレッドシートはgetActiveSpreadで取得できるけど、今開いているものとは別のスプレッドシートを開きたい場合・・・他の2つの方法でそのスプレッドシートをしゅとくするといい。URLを指定して開くかidを指定して開くかですね。

URLを指定してスプレッドシートを開く

URLを指定してスプレッドシートを取得する際に使うのは、openByUrl()を使おう。

var spreadSheet = SpreadsheetApp.openByUrl('スプレッドシートのURL');

URLっていうのは普通にスプレッドシートのURLっていう部分ですね。

ちょろっと書いて実行してみると、取得できていますね。

idを指定してスプレッドシートを開く

idを指定して開く関数はopenById()。idを引数として指定することでそのスプレッドシートを取得することができる。

var spreadSheet = SpreadsheetApp.openById(id);

idってどこだよ?って感じだけど、URLのこの選択している部分。

実行してみても取得できていますね。

getActiveSpreadSheet()でアクティブなスプレッドシートを開く以外には、URLやidを指定して良い感じに開いてやりましょう。

別のスプレッドシートに書き込みする方法

これはアクティブなスプレッドシートでもURLやidを指定して取得したスプレッドシートでも変わらないですよね。書き込むスプレッドシートが変わるだけ。取得したらsetValueなんかで書き込めば書き込める。

var spreadSheet = SpreadsheetApp.openById('1qufbEkCV9GdUZ9ffb6xBtF4lfvG_QEJIcgX_XLaPwZ4');
spreadSheet.getRange("A1").setValue("書き込んだよおおおおおおおおおおおおおおおおおおおおおおおお");

別のスプレッドシートにコピーする方法

人るのスプレッドシートの内容を別のスプレッドシートにコピーする方法。copyTo()っていう関数があるからそれを使おう。まずはコピー元のスプレッドシートとコピー先のスプレッドシートを用意。今回はTodoのスプレッドシートを別のスプレッドシートにコピーしたい。

実際にコードを書いて実行してみる。

function myFunction() {
 // コピー元のスプレッドシートを取得
 var s1 = SpreadsheetApp.openById('1m4yGPDs4YQVVC7voXTHiDsPTbQ6cW8NJXCFVxfMcOQ8');
 // そのスプレッドシートにある最初のシートを取得
 var sheet = s1.getSheets()[0];
 
 // コピー先のスプレッドシートを取得
 var s2 = SpreadsheetApp.openById('1yJtVmq5U1obSnRUq8ORaiwk02qXMpUGLMHzFj5-bFBg');
 // 上記で取得したシートを、そのスプレッドシートにコピー
 sheet.copyTo(s2);
}

これを実行すると、コピー先のスプレッドシートにコピー元のスプレッドシートのシートがコピーされる。コピーしたいシートは指定する必要があるけどね。

まとめ

アクティブなもの以外の別のスプレッドシートを開く方法や書き込む方法・コピー方法なんかをちょっとやってみたけど、いろいろ関数用意されているから便利でGASいいですね。

  • アクティブなスプレッドシートを開く・・・getActiveSpreadSheet()
  • URLを指定してスプレッドシートを開く・・・openByUrl()
  • idを指定してスプレッドシートを開く・・・openById()
  • コピーする・・・copyTo()
  • ・・・

面倒なスプレッドシートの作業もGASでプログラム作ってしまえば、どんどん楽になっていくからやってしまおう。

おすすめの記事