【はじめに】GAS(Google Apps Script)でスプレッドシートAからBに文字を転記できるようになるまで

GAS

「社内でちょっとGASが触れる便利な人」として、ひたすらスプレッドシートを転記する仕組みを作っています。しんどいね。

この記事ではタイトル通り、GASでスプレッドシートAからBに文字を転記するテクニックを紹介します。

以下のように、3回に分けて記事を書くつもりです。

今回【はじめに】は、全体のあらまし説明です。

GASでスプレッドシート転記する方法は、大きく分けて2通りありまして。それぞれを【基礎編】と【応用編】で説明します。

【基礎編】では、シートAのセルをひとつずつgetRange().getValue()して、別のシートにsetValue()していく方法。

【応用編】では、シートAをgetDataRange().getValues()でまるごと2次元配列として取得して、setValues()する方法。

「何言ってるのかわかんない」という人、大丈夫です。それぞれの記事中で説明します。

もうこの時点で「あ、無理だわ」と思った人も大丈夫。ココナラで発注しましょう。平均予算3,000円〜5,000円くらいで転記のしくみを作ってくださるGASエンジニアの方々がいます。

【ココナラ】Webサイト・デザイン・動画など制作物発注

なぜ、2通りの方法を紹介するのか

問題は、同じ目的なのに、なぜ【基礎編】と【応用編】で別々のやり方、別々のコードを紹介するのか、ということです。

どっちか片方だけ、便利な方だけ載せたらいいのではないか。

そう思うのも、もっともだと思います。

わざわざ、2通りの方法を紹介する理由。

それはそれぞれ、以下のような特徴があるからです。

【基礎編】比較的かんたん。だけど大量のデータを処理できない。
【応用編】配列がちょっとややこしい。だけど大量のデータを処理できる。

「大量のデータ」というのは、もっと具体的にいうとGASの最大実行時間6分を超える量のデータです。

以前、私が試してみたところでは、【基礎編】のやりかたで処理しようとすると、だいたい400行前後で6分を超えてエラーになります。

「そんな大量のデータを処理するつもりはない」という人も、念のため【応用編】まで読み進めることをおすすめします。そのうち大量のデータを処理する、あるいは、処理させられるはめになるので。

おそらくあなた自身も、【基礎編】の内容で満足すると、もっと大量のデータにも挑戦してみたくなるでしょう。あなたの周囲も「今度はあれ作って、これ作って」依頼してきます。遅かれ早かれそうなる運命です。

そこで2通り、というか、2段階の方法をご紹介するわけです。

まずはスプレッドシートでGASを使ってみよう!

Googleアカウントはお持ちですか? まだでしたら取得してください。

そして試しに、新しいスプレッドシートを作ってみましょう。

Google Driveから「+新規」>「Googleスプレッドシート」を選択

作成できたら、ファイルを開いて「拡張機能」>「Apps Script」へ進みましょう。

以下のような画面が出てきたら、試しにコードを入力してみましょう。

function myFunction() {

  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = spreadsheet.getSheetByName('シート1'); 
  sheet.getRange(1,1).setValue("Hello World");

}

コードを入力したら、「保存」して「実行」ボタンを押してみてください。

ここでいきなり画面が暗くなって、承認画面に移るはずです。「権限を確認」を押してください。ここからの選択画面が、初めての方には少しわかりづらいと思います。

アカウントの選択画面に移ります。あなた自身のGoogleアカウントであることを確認して、選択しましょう。

この次から少しわかりづらいです。何だか非難されているような画面ですが、たじろがずに小さな「詳細」を押しましょう。

さらに確認してきますが、ここでひるんではいけません。「無題のプロジェクト(安全ではないページ)に移動」を選択。

またまたしつこく尋ねてきます。しかしもうあとひと息。「許可」を選択。

すると、ようやくコードが動き出しました。スプレッドシートに戻ってみてください。いちばん左上のマス(A1)に「Hellow World」という文字が入っていたら、実験成功です。

一度この面倒な手続きを済ませたら、次回以降は「実行」ボタンを押すだけでコードを実行できるようになります。

GASコードの簡単な解説

function myFunction() {

  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = spreadsheet.getSheetByName('シート1'); 
  sheet.getRange(1,1).setValue("Hello World");

}

コードについても簡単に説明しときます。

まず、以下の2行で、このスプレッドシートの「シート1」を、シートの名前で取得しています。

  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = spreadsheet.getSheetByName('シート1'); 

要するに「これから編集するシートはこれですよ」という指定をしているわけです。

そして次の1行で、「シート1」のセルに”Hello World”という文字を入れています。

  sheet.getRange(1,1).setValue("Hello World");

getRange(1,1)というのが「1行目の1列目に」、setValue(“Hello World”)というのが「”Hello World”と書き込む」。つまり「1行目の1列目に”Hello World”と書き込む」という命令をしています。

コメント

タイトルとURLをコピーしました