前提・実現したいこと
Google Apps Script で「値のみ貼り付け」をしたい。
発生している問題・エラーメッセージ
スクリプトを実行時にエラーは出ず、「スクリプトを実行しました」と表示されるものの、
貼り付けを指定した列は空白のままになっている。
該当のソースコード
var sheet = SpreadsheetApp.getActiveSheet()
var range = sheet.getRange('M:M');
var target = sheet.getRange('N:N');
range.copyTo(target, {contentsOnly:true});
};
試したこと
他のサイトも参考に複数のパターンを試してみましたがすべて同じ現象が起きました。
補足情報(FW/ツールのバージョンなど)
function myFunction() { //ソート・星式コピー var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('H4').activate(); var criteria = SpreadsheetApp.newFilterCriteria() .setHiddenValues(['××', '××', '××', '××', '××', '××', '××']) .build(); spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(8, criteria); spreadsheet.getCurrentCell().offset(40, 2).activate(); var destinationRange = spreadsheet.getActiveRange().offset(0, 0, 530); spreadsheet.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES); spreadsheet.getCurrentCell().offset(0, 0, 530, 1).activate(); spreadsheet.getRange('H4').activate(); criteria = SpreadsheetApp.newFilterCriteria() .setHiddenValues([]) .build(); spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(8, criteria); spreadsheet.getRange('G4').activate(); criteria = SpreadsheetApp.newFilterCriteria() .setHiddenValues(['××', '××']) .build(); spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(7, criteria); spreadsheet.getCurrentCell().offset(1, 3).activate(); destinationRange = spreadsheet.getActiveRange().offset(0, 0, 530); spreadsheet.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES); spreadsheet.getCurrentCell().offset(0, 0, 530, 1).activate(); spreadsheet.getRange('G4').activate(); criteria = SpreadsheetApp.newFilterCriteria() .setHiddenValues([]) .build(); spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(7, criteria); //列挿入 var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('I:I').activate(); spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2); spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate(); var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('L:L').activate(); spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2); spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate(); var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('O:O').activate(); spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 2); spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 2).activate(); //数式入力・オートフィル・値コピー var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('J5').activate() .setFormula('=MAXIFS(I:I,D:D,D5)'); spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('J5:J538'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES); spreadsheet.getRange('K5').activate(); spreadsheet.getRange('J5').copyTo(spreadsheet.getActiveRange(), {contentsOnly:true}); var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('M5').activate() .setFormula('=SUMIFS(L:L,D:D,D5)'); spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('M5:M538'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES); spreadsheet.getRange('N5').activate(); spreadsheet.getRange('M5').copyTo(spreadsheet.getActiveRange(), {contentsOnly:true}); var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('P5').activate() .setFormula('=MAXIFS(O:O,D:D,D5)'); spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('P5:P538'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES); var sheet = SpreadsheetApp.getActiveSheet() var range = sheet.getRange('M:M'); var target = sheet.getRange('N:N'); range.copyTo(target, {contentsOnly:true}); };
記載されてるコードは問題なさそうなので、その他の部分に原因があるのかなと思います。
基本的な部分の確認ですが、
やりたいことは、開いているスプレッドシートの M列をコピーして N列に値を貼付けですよね?
このコードは 開いているスプレッドシートのエディタに記述されてるんですよね?
ご回答ありがとうございます。
やりたいことは、開いているスプレッドシートの M列をコピーして N列に値を貼付けです。
このコードは開いているスプレッドシートのエディタに記述してます。
同エディタに列を追加、関数入力のコードの記述に続き、「値を貼付け」のコードを記述しているのですが「値を貼付け」のみ反映されませんでした。この部分を純粋なコピペのコードで置き換えると数式はコピペできるようでした。
なんとなく状況理解できました。
個人情報的な部分は xxx等で伏せていただいて、実行してる コードをフルに記載いただけますか。
その際 コードは <CODE>ボタン使っていただくと見やすいです。
上の補足情報にコードのフルを追記いたしました。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー