【GAS35】セルのコピーを高速化する方法

基礎講座

GAS基礎講座一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【GAS】複数のNGワードを 見つける方法(Gスプレッドシート)
セル内に含まれるNGワードを判別できるようになります。 GASのカスタム関数の効果的な使い方がわかります。 特定のシートから値を読み込むことができます。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

 

  • GASで一気にセルをコピペする方法がわかります。
  • GASで時間を計測する方法がわかります。


逆に、知らないと

あなた:「なんかセルをコピーすると遅い」

という状態が延々続きます。

なので、サクッと動画をご覧いただき

てな感じで、答えてあげてください。

動画はこちら

マインドセットします。

マインドセット
ループ内でスプレッドシートの値の設定や取得を行うときは注意しろ

 

スプレッドシートに対する関数は非常に遅いです。
なので、速度を改善したければ
なるべく呼び出す回数を減らしましょう。

 

動画で使用したスクリプト

function copysell() {
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const sh1 = ss.getSheetByName('GAS35元')
  const sh2 = ss.getSheetByName('GAS35先')

  const lr = sh1.getLastRow()
  console.log(lr)
  const lc = sh1.getLastColumn()
  console.log(lc)

  for (let i = 1; i <= lr; i++) {
    for (let s = 1; s <= lc; s++) {
      let val = sh1.getRange(i, s).getValue()
      sh2.getRange(i, s).setValue(val)
    }
  }

  // let values = sh1.getDataRange().getValues()
  // console.log(values)
  // console.log(values.length)
  // console.log(values[0].length)
  // sh2.getRange(1, 1, values.length, values[0].length).setValues(values)






}


function speedtest() {
  const label = '計測'
  console.time(label)
  copysell()
  console.timeEnd(label)
}

 

シートはこちら

※クリックするとシートが開きます。

 

では、今回のGoogleシートマスターへの究極の方法です。

Step1.
上記スクリプトをコピペする

Step2.

セーブしてspeedtest()を実行してみる

Step3.

ループの箇所をコメントアウトする

Step4.

setValues()の箇所のコメントを外す

Step5.

早くなっていることを確認する

では、早速、スクリプトをコピペしてください
今すぐです。

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS36】セル更新時に自動的にソートする方法
GAS セルを更新時にソート(並べ替え)する方法がわかります。

 

GAS基礎講座一覧

コメント

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