GASでの計算式セルの値貼り

243 views
Skip to first unread message

Sachiko

unread,
Apr 16, 2020, 4:44:32 AM4/16/20
to Google Apps API Japan
GASでの計算式を値貼りする際にうまくいかず、ご教示いただけますと幸いです。

下記のように、C3からのセル・D3からのセルを別のシートからデータを参照し、計算式に書き換えています。
計算式に書き換えた上で下のセルまでデータを反映しています。
最終的にCセルとDセルを値貼りしようとしているのですが、
なぜかCセルはうまく値貼りされて、Dセルは値が空になってしまいます。
どのような要因が考えられますでしょうか。

  //C3セルを計算式に
    var C = sheetCM.getRange("C3");
    C.setFormula("=test!C13+test!D13");
    C = sheetCM.getRange("C3");
    var lastrow_C = sheetCM.getLastRow();
    sheetCM.getRange('C3').copyTo(sheetCM.getRange('C3:C'+lastrow_C));
   
    //D3セルを計算式に
    var D = sheetCM.getRange("D3");
    D.setFormula("=test!E13+test!F13");
    var lastrow_D = sheetCM.getLastRow();
    sheetCM.getRange('D3').copyTo(sheetCM.getRange('D3:D'+lastrow_D));
    
    //計算式セルを値貼り
    sheetCM.getRange('C3:D'+lastrow_GA).copyTo(sheetCM.getRange('C3:D'+lastrow_D), {contentsOnly:true});

Tanaike

unread,
Apr 16, 2020, 10:03:49 PM4/16/20
to Google Apps API Japan
forumulasの計算を完了させた後に値として取得するためにSpreadsheetApp.flush()を最後の行の一つ上に入れてみるのはいかがでしょうか。これが問題の原因かもしれないと思いました。修正したスクリプトは下記の通りです。

sheetCM.getRange('D3').copyTo(sheetCM.getRange('D3:D'+lastrow_D));

SpreadsheetApp.flush(); // <--- ここです

Sachiko

unread,
Apr 17, 2020, 5:45:19 AM4/17/20
to Google Apps API Japan
ご教示いただきありがとうございます。
こちらを追記したところ問題なく動作するようになりました!!

2020年4月17日金曜日 11時03分49秒 UTC+9 Tanaike:
Reply all
Reply to author
Forward
0 new messages