スプレッドシートに数式のみをコピーするスクリプトはあるでしょうか

4,761 views
Skip to first unread message

にんまりpapa

unread,
Dec 14, 2014, 11:35:54 PM12/14/14
to google-app...@googlegroups.com
40列5000行程度のスプレッドシートに数式をセットしたい。

書式を整えるために別シートにひな形を作っておき、CopyTo メソッドでFormatOnlyオプションを使えば書式のみコピーは可能ですが、数式のみをコピーする方法はありますでしょうか?

いろいろとサイトを検索してみましたが、見つかりません。

また、他の方法で処理速度の速い方法をご存じの方、ご教示いただけると助かります。


Takashi Yokoyama

unread,
Dec 15, 2014, 10:05:29 AM12/15/14
to google-app...@googlegroups.com
横山@GDG中国です。
こんばんは。

以下の様に数式だけ取得して、数式だけセットするという力技でいかがでしょうか。
範囲指定して、一気に取得、一気に書き込みだからそこまで遅くはならないと思うのですが…。
(試してみないとわかりませんが)

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  var sheet = ss.getActiveSheet();
  
  // 数式を取得
  var formulas = sheet.getRange("B1:C6").getFormulas();

  // そのまま数式をセット  
  sheet.getRange("D1:E6").setFormulas(formulas);
}




2014年12月15日 13:35 にんまりpapa <sd.o...@gmail.com>:

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。


--
Takashi Yokoyama
GDG Chugoku Manager

tksyo...@gmail.com
http://sites.google.com/site/gdgchugokuofficial/
G+: http://goo.gl/VV3eJ
twitter: @GDGChugoku

にんまりpapa

unread,
Dec 16, 2014, 12:03:05 AM12/16/14
to google-app...@googlegroups.com
横山様

アドバイスをありがとうございます。

早速試してみましたが、下記2つの点で使えないようです。

1.数式が埋め込まれている領域のみを取得する必要がある。
  数式が埋め込まれているのが連続していればいいのですが、飛び飛びだと指定が煩雑になる。
  書式の場合は、数式とは関係ない領域も含め全体を取得すればいいのですが、このようにすると数式のないセルは空欄に置き換えられてしまいます。

2.コピーされた数式の参照が相対参照にならない。
  コピー元と違う位置に貼り付ける場合、その位置での参照値にあらかじめセットし直しておく必要があり、これも手間がかかります。

現時点では、数式をセットしたいシート全体を配列で取得し、その配列の各々に数式をセットし、その配列を書き戻す方法で行うことにしました。
配列に数式をセットするのが結構面倒ですが、うまくいきました。

以上、今後ともよろしくお願い致します。


2014年12月15日月曜日 13時35分54秒 UTC+9 にんまりpapa:
Reply all
Reply to author
Forward
0 new messages