Google spreadsheet で 全てのシートに記載されている内容を一枚のシートにまとめる方法を検討しています。
- GASでシート名を取得
- QUERY関数でシートの内容をまとめる
という手法を試しましたが、うまくいきません。
現行の問題を解決する方法ないし、他の方法をご教示いただけると助かります。
よろしくお願いいたします。
以下、現在、実施している方法です。
- GASでシート名を取得
function myAllSheetName() {
const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
return sheets.map(sheet => sheet.getName());
}
- QUERY関数でシートの内容をまとめる
シート名をQUERYで利用できるかたちに変換する。
=ARRAYFORMULA("'"&myAllSheetName()&"'" &"!A:i"&if(left(myAllSheetName(),2)="20",";",))
↑の出力結果をCONCATINATEで一つのセルにまとめる(仮にB1に出力させるとする)
=CONCATENATE(A:A)
B1に出力された結果をもとに、各シートの内容をまとめる(仮にC1に出力させるとする)
QUERY({B1},"where Col1 is not null")
出力結果はB1=C1となります。
B1に出力された内容を、QUERY({B1},"where Col1 is not null")が文字列として認識していまい、
QUERYで指定するシート名と認識しないことが課題です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。