前提・実現したいこと
プログラム、GAS、teratail初心者です。
GASで複数のシートの値を一つのシートにまとめるプログラムを作成しています。
基本的には過去に別の方が質問されている以下の内容と同じなのですが、、、、
【GAS】複数のシートを一つのシートにまとめたいです。
https://teratail.com/questions/112018
こちらで紹介されているコードでほぼ要件は満たしているのですが、、、、
1点だけ解決できないことがあり、お知恵を頂きたく、質問させて下さい。
発生している問題・エラーメッセージ
今回、統合する元のデータに"セル内の画像"(挿入⇒画像⇒セル内の画像)があり、
このセル内画像がある状態でリンク先で紹介されている下記のGASを実行すると、
画像データを含む箇所が「CellImage」となってしまい、データの統合が上手く出来ません。
セル内画像が必須のデータである為、解決方法を探しております。
ご存知の方はいらっしゃいますでしょうか。
該当のソースコード
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sh_all = spreadsheet.getSheetByName('all'); //コピー先のシート名all
var copy_column_range = 16 //コピーする列数
//全てのシートをallシートにコピー。
var c_sheet_cnt = spreadsheet.getSheets().length; //コピーするシート数
var last_l_row = 2; //何行目からコピーするか※すべてのシート
var dt_all_sheet = []; // 全てのシートのデータの配列
//全てのシートのデータを配列に格納してから書き出し
for (var i=0;i<c_sheet_cnt;i++){
var sheet = spreadsheet.getSheets()[i];
if (sheet.getName() === "all") {
continue;
}
var new_l_row = sheet.getLastRow(); //各シートの最終行を取得
//シートの値を配列に格納 var copyValue = sheet.getRange(2,1,new_l_row-1,copy_column_range).getValues(); var dt_all_sheet = dt_all_sheet.concat(copyValue); var last_l_row = last_l_row + new_l_row-1;
}
//sheet内容を書き出し
sh_all.getRange(2,3,dt_all_sheet.length,copy_column_range).setValues(dt_all_sheet);
}
あなたの回答
tips
プレビュー