別のシートからアクティブシートに転記する
GAS(Google Apps Script)を使用して、別のスプレッドシートからデータを取得し、アクティブなスプレッドシートに転記する方法は次のようになります。
function myFunction() {
var ss = SpreadsheetApp.openById('スプレッドシートID');
var sheet = ss.getSheetByName('シート1');
var data = sheet.getDataRange().getValues();
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
activeSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
解説
1.別のスプレッドシートを開く
var ss = SpreadsheetApp.openById('スプレッドシートID');
2.データを取得する
var sheet = ss.getSheetByName('シート名');
var data = sheet.getDataRange().getValues();
3.アクティブなスプレッドシートにデータを転記する
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
activeSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
これにより、別のスプレッドシートからデータを取得し、アクティブなスプレッドシートに転記することができます。ただし、転記先のスプレッドシートに十分な権限があることを確認する必要があります。また、スプレッドシートIDやシート名は、それぞれのスプレッドシートに合わせて変更する必要があります。
指定したシートに転記する場合
5行目の「指定したシート名」の箇所を転記する先のシート名に設定する
function myFunction() {
var ss = SpreadsheetApp.openById('スプレッドシートID');
var sheet = ss.getSheetByName('シート1');
var data = sheet.getDataRange().getValues();
var targetSheet = ss.getSheetByName('指定したシート名');
targetSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
アクティブなスプレッドシートの右隣りに新規シートを作成して貼り付け
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
var newSheet = activeSheet.insertSheet();
newSheet.setName('新しいシート名');
別のスクリプト
別のスプレットシートの特定のシートをアクティブシートに貼り付け
function copyDataFromOtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheetName = "<sheet-name>"; // 取得するシート名
var spreadsheetId = "<spreadsheet-id>"; // 取得元スプレッドシートのID
// 2. アクティブなスプレッドシートとシートの情報
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = activeSpreadsheet.getActiveSheet();
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
// 4. データを取得してアクティブなスプレッドシートに転記
var data = sourceSheet.getDataRange().getValues(); // データを取得
activeSheet.getRange(1, 1, data.length, data[0].length).setValues(data); // データをアクティブなスプレッドシートに転記
}
解説
- 取得元スプレッドシートの情報を指定します。
sheetName
変数には取得するシート名、spreadsheetId
変数には取得元スプレッドシートのIDを指定します。<sheet-name>
と<spreadsheet-id>
を取得元スプレッドシートのシート名とIDに置き換える必要があります
- アクティブなスプレッドシートとシートの情報を取得します。
activeSpreadsheet
変数にはアクティブなスプレッドシートのオブジェクトを、activeSheet
変数にはアクティブなシートのオブジェクトを取得します。 - 取得元スプレッドシートのシートを取得します。
sourceSpreadsheet
変数には取得元スプレッドシートのオブジェクトを、sourceSheet
変数には取得するシートのオブジェクトを取得します。 - 取得元スプレッドシートのデータを取得し、アクティブなスプレッドシートに転記します。
data
変数には取得したデータを、activeSheet.getRange()
メソッドを使用してアクティブなスプレッドシートの指定されたセル範囲に転記します。
別のスクリプト
別のスプレットシートの特定のシートにあるデータをアクティブシートに転記する
function copyDataFromAnotherSpreadsheet() {
var sourceSpreadsheetId = "<source-spreadsheet-id>"; // コピー元のスプレッドシートIDを入力
var sourceSheetName = "Sheet1"; // コピー元のシート名を入力
var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);
var sourceData = sourceSheet.getDataRange().getValues();
var targetSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = targetSpreadsheet.insertSheet();
targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData);
}
解説
copyDataFromAnotherSpreadsheet()
:関数の名前です。var sourceSpreadsheetId = "<source-spreadsheet-id>";
:コピー元のスプレッドシートのIDを指定するための変数です。<source-spreadsheet-id>
をコピー元のスプレッドシートのIDに置き換えてください。var sourceSheetName = "Sheet1";
:コピー元のスプレッドシート内のコピー元のシートの名前を指定するための変数です。"Sheet1"
をコピー元のシート名に置き換えてください。var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
:指定されたIDのスプレッドシートを開くための変数です。var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);
:指定された名前のシートを取得するための変数です。var sourceData = sourceSheet.getDataRange().getValues();
:シート内のデータを取得するための変数です。getDataRange()
は、シート内のすべてのセルを含む範囲を取得します。getValues()
は、この範囲内のデータを二次元配列として取得します。var targetSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
:アクティブなスプレッドシートを取得するための変数です。var targetSheet = targetSpreadsheet.insertSheet();
:アクティブなスプレッドシートに新しいシートを挿入するための変数です。targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData);
:新しいシートにデータを貼り付けるためのコードです。getRange(1, 1, sourceData.length, sourceData[0].length)
は、新しいシートの最初のセルからデータを貼り付ける範囲を指定します。setValues(sourceData)
は、指定された範囲にデータを貼り付けます。sourceData
は、コピー元のスプレッドシートから取得したデータの二次元配列です。
別シートの特定のセルの値を転記
function myFunction() {
const ss = SpreadsheetApp.openByUrl("スプレットシートのURLを記入"); // スプレッドシートを指定
const sheet = ss.getSheets()[0]; // シートを指定
const recipient = sheet.getRange(1, 1).getValue(); // 1行目、1列目を取得
console.log(recipient);
}
別のスプレッドシートのセルの値を取得する方法
1.getValue()
メソッドを使用する方法 指定されたセルの値を取得す
function getCellValue() {
var sheet = SpreadsheetApp.openById('スプレッドシートのID').getSheetByName('シートの名前');
var cell = sheet.getRange('A1');
var value = cell.getValue();
Logger.log(value);
}
2.importRange()
関数を使用する方法 指定された範囲の値を取得
function getCellValue() {
var value = SpreadsheetApp.openById('スプレッドシートのID').getSheetByName('シートの名前').getRange('A1').getValue();
Logger.log(value);
}
3.query()
関数を使用する方法 別のスプレッドシートのデータをクエリーにする
function getCellValue() {
var query = 'SELECT A1 FROM シートの名前';
var value = SpreadsheetApp.openById('スプレッドシートのID').getSheetByName('シートの名前').query(query).getValues()[0][0];
Logger.log(value);
}
別のスプレッドシートからデータをアクティブシートに転記する
1.getRange()
メソッドを使用する方法 転記先のセルを指定
function copyData() {
var sourceSheet = SpreadsheetApp.openById('元のスプレッドシートのID').getSheetByName('元のシートの名前');
var sourceCell = sourceSheet.getRange('A1');
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var targetCell = targetSheet.getRange('B2');
targetCell.setValue(sourceCell.getValue());
}
転記元のスプレットシートのID、シートの名前、セルを指定して、
アクティブシートの指定したセルに貼付け
2.copyTo()
メソッドを使用する方法 元のセルの内容を複製して、転記先のセルに貼り付け
function copyData() {
var sourceSheet = SpreadsheetApp.openById('元のスプレッドシートのID').getSheetByName('元のシートの名前');
var sourceCell = sourceSheet.getRange('A1');
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var targetCell = targetSheet.getRange('B2');
sourceCell.copyTo(targetCell);
}
3.setValues()
メソッドを使用する方法 元のセルの内容を取得して、転記先のセルに設定
function copyData() {
var sourceSheet = SpreadsheetApp.openById('元のスプレッドシートのID').getSheetByName('元のシートの名前');
var sourceCell = sourceSheet.getRange('A1');
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var targetCell = targetSheet.getRange('B2');
var value = sourceCell.getValue();
targetCell.setValues([[value]]);
}
別のスプレッドシートからデータを取得し、新しいシートに転記する
function copyDataFromOtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheetName = "<sheet-name>"; // 取得するシート名
var spreadsheetId = "<spreadsheet-id>"; // 取得元スプレッドシートのID
// 2. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate); // 新しいシートを作成
var newSheetName = formattedDate + "_" + sheetName;
newSheet.setName(newSheetName); // シート名を設定
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
// 4. データを取得して新規シートに転記
var data = sourceSheet.getDataRange().getValues(); // データを取得
newSheet.getRange(1, 1, data.length, data[0].length).setValues(data); // データを新規シートに転記
}
解説
- 取得元スプレッドシートの情報を指定します。
sheetName
変数には取得するシート名、spreadsheetId
変数には取得元スプレッドシートのIDを指定します。<sheet-name>
と<spreadsheet-id>
を取得元スプレッドシートのシート名とIDに置き換える必要があります
- 新しいシートを作成し、シート名を設定します。現在の日付と時刻を含むシート名を作成するために、
Utilities.formatDate
を使用して、現在の日付と時刻を取得します。SpreadsheetApp.getActiveSpreadsheet()
を使用して、アクティブなスプレッドシートを取得し、insertSheet
を使用して、新しいシートを作成します。newSheet.setName
を使用して、シート名を設定します。 - 指定されたスプレッドシートからデータを取得するために、
openById
を使用してスプレッドシートを開き、getSheetByName
を使用してシートを取得します。 getDataRange
を使用してデータを取得し、setValues
を使用して新しいシートに転記します。
2つのスプシデータを取り込み、新規シートを作成して転記する
function copyDataFromOtherSheet() {
// 1. スプレッドシート1の情報
var sheetName1 = "<sheet-name>"; // 取得するシート名
var spreadsheetId1 = "<spreadsheet-id>"; // 取得元スプレッドシートのID
// 2. スプレッドシート2の情報
var sheetName2 = "<sheet-name>"; // 取得するシート名
var spreadsheetId2 = "<spreadsheet-id>"; // 取得元スプレッドシートのID
// 3. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet1 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheetName1); // 新しいシートを作成
var newSheet2 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheetName2); // 新しいシートを作成
// 4. スプレッドシート1のデータを取得して新規シートに転記
var sourceSpreadsheet1 = SpreadsheetApp.openById(spreadsheetId1);
var sourceSheet1 = sourceSpreadsheet1.getSheetByName(sheetName1);
var data1 = sourceSheet1.getDataRange().getValues(); // データを取得
newSheet1.getRange(1, 1, data1.length, data1[0].length).setValues(data1); // データを新規シートに転記
// 5. スプレッドシート2のデータを取得して新規シートに転記
var sourceSpreadsheet2 = SpreadsheetApp.openById(spreadsheetId2);
var sourceSheet2 = sourceSpreadsheet2.getSheetByName(sheetName2);
var data2 = sourceSheet2.getDataRange().getValues(); // データを取得
newSheet2.getRange(1, 1, data2.length, data2[0].length).setValues(data2); // データを新規シートに転記
}
解説
- まず、1つ目のスプレッドシートの情報を指定します。変数
sheetName1
には取得するシート名、spreadsheetId1
には取得元スプレッドシートのIDを設定します。同様に、2つ目のスプレッドシートの情報を指定します。 - 次に、新しいシートを作成します。変数
date
に現在の日付と時刻を取得し、formattedDate
には"yyyy/MM/dd HH:mm:ss"
形式でフォーマットされた日付と時刻を格納します。そして、insertSheet()
メソッドを使用して新しいシートを作成し
2つのスプシインポート後、マッチングでカラーで抽出する
function OtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheet1Name = "<シート1名>"; // 取得するシート1名
var spreadsheet1Id = <シート1のID>>"; // 取得元スプレッドシート1のID
var sheet2Name = "<シート2名>"; // 取得するシート2名
var spreadsheet2Id = "<シート2のID>"; // 取得元スプレッドシート2のID
// 2. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet1 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet1Name); // 新しいシート1を作成
var newSheet2 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet2Name); // 新しいシート2を作成
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet1 = SpreadsheetApp.openById(spreadsheet1Id);
var sourceSheet1 = sourceSpreadsheet1.getSheetByName(sheet1Name);
var sourceSpreadsheet2 = SpreadsheetApp.openById(spreadsheet2Id);
var sourceSheet2 = sourceSpreadsheet2.getSheetByName(sheet2Name);
// 4. データを取得して新規シートに転記
var data1 = sourceSheet1.getDataRange().getValues(); // データ1を取得
newSheet1.getRange(1, 1, data1.length, data1[0].length).setValues(data1); // データ1を新規シート1に転記
var data2 = sourceSheet2.getDataRange().getValues(); // データ2を取得
newSheet2.getRange(1, 1, data2.length, data2[0].length).setValues(data2); // データ2を新規シート2に転記
// 5. データの突合と背景色の設定
var lastRow1 = newSheet1.getLastRow();
var lastRow2 = newSheet2.getLastRow();
var dataRange1 = newSheet1.getRange(1, 1, lastRow1, 1);
var dataRange2 = newSheet2.getRange(1, 1, lastRow2, 1);
var values1 = dataRange1.getValues();
var values2 = dataRange2.getValues();
var backgrounds1 = dataRange1.getBackgrounds();
var backgrounds2 = dataRange2.getBackgrounds();
for (var i = 0; i < values1.length; i++) {
for (var j = 0; j < values2.length; j++) {
if (values1[i][0] == values2[j][0]) { // A列の値が一致したら
dataRange1.getCell(i+1, 1).setBackground('#F08080'); // 新規シート1の該当セルをピンク色に
dataRange2.getCell(j+1, 1).setBackground('#F08080'); // 新規シート2の該当セルをピンク色に
break;
}
}
}
}
解説
- 取得元スプレッドシートの情報を設定する
- 最初に、取得元スプレッドシートの情報を設定します。これらは、取得する2つのシートの名前と、それぞれのスプレッドシートのIDです。
- 新しいシートの作成
- 次に、新しいシートを作成します。日付と時刻を取得し、その値を新しいシート名に含めます。
SpreadsheetApp.getActiveSpreadsheet()
は、現在開いているスプレッドシートの情報を取得します。
- 取得元スプレッドシートのシートを取得する
SpreadsheetApp.openById(id)
は、指定されたIDのスプレッドシートを開きます。そして、getSheetByName(name)
は、指定された名前のシートを取得します。
- データを取得して新規シートに転記する
- 取得元の2つのスプレッドシートからデータを取得し、新しく作成した2つのシートに転記しています。
getDataRange()
メソッドは、対象のシートのデータが入力されている範囲を取得します。そしてgetValues()
メソッドは、その範囲内のデータを二次元配列として取得します。setValues()
メソッドは、指定した範囲に二次元配列の値をセットするメソッドです。
- 取得元の2つのスプレッドシートからデータを取得し、新しく作成した2つのシートに転記しています。
- データの突合と背景色の設定
- 新しく作成した2つのシートのA列を比較して、値が一致するセルの背景色をピンク色に変更しています。
getLastRow()
メソッドは、範囲の最終行を取得します。getRange()
メソッドは、指定された範囲のセルを取得します。getBackgrounds()
メソッドは、対象の範囲の背景色を取得します。 - その後、2つの配列の要素を順番に比較していきます。もし、values1のi番目の要素とvalues2のj番目の要素が一致した場合、新しいシート1と2の該当するセルの背景色をピンク色に設定します。
- 新しく作成した2つのシートのA列を比較して、値が一致するセルの背景色をピンク色に変更しています。
上のスクリプトで部分一致の場合
function OtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheet1Name = "<シート1名>"; // 取得するシート1名
var spreadsheet1Id = <シート1のID>>"; // 取得元スプレッドシート1のID
var sheet2Name = "<シート2名>"; // 取得するシート2名
var spreadsheet2Id = "<シート2のID>"; // 取得元スプレッドシート2のID
// 2. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet1 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet1Name); // 新しいシート1を作成
var newSheet2 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet2Name); // 新しいシート2を作成
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet1 = SpreadsheetApp.openById(spreadsheet1Id);
var sourceSheet1 = sourceSpreadsheet1.getSheetByName(sheet1Name);
var sourceSpreadsheet2 = SpreadsheetApp.openById(spreadsheet2Id);
var sourceSheet2 = sourceSpreadsheet2.getSheetByName(sheet2Name);
// 4. データを取得して新規シートに転記
var data1 = sourceSheet1.getDataRange().getValues(); // データ1を取得
newSheet1.getRange(1, 1, data1.length, data1[0].length).setValues(data1); // データ1を新規シート1に転記
var data2 = sourceSheet2.getDataRange().getValues(); // データ2を取得
newSheet2.getRange(1, 1, data2.length, data2[0].length).setValues(data2); // データ2を新規シート2に転記
// 5. データの突合と背景色の設定
var lastRow1 = newSheet1.getLastRow();
var lastRow2 = newSheet2.getLastRow();
var dataRange1 = newSheet1.getRange(1, 1, lastRow1, 1);
var dataRange2 = newSheet2.getRange(1, 1, lastRow2, 1);
var values1 = dataRange1.getValues();
var values2 = dataRange2.getValues();
var backgrounds1 = dataRange1.getBackgrounds();
var backgrounds2 = dataRange2.getBackgrounds();
for (var i = 0; i < values1.length; i++) {
for (var j = 0; j < values2.length; j++) {
if (values1[i][0].indexOf(values2[j][0]) !== -1) { // A列の値が部分一致したら
dataRange1.getCell(i+1, 1).setBackground('#F08080'); // 新規シート1の該当セルをピンク色に
dataRange2.getCell(j+1, 1).setBackground('#F08080'); // 新規シート2の該当セルをピンク色に
break;
}
}
}
別のスクリプト
function OtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheet1Name = "<シート1名>"; // 取得するシート1名
var spreadsheet1Id = <シート1のID>>"; // 取得元スプレッドシート1のID
var sheet2Name = "<シート2名>"; // 取得するシート2名
var spreadsheet2Id = "<シート2のID>"; // 取得元スプレッドシート2のID
// 2. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet1 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet1Name); // 新しいシート1を作成
var newSheet2 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet2Name); // 新しいシート2を作成
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet1 = SpreadsheetApp.openById(spreadsheet1Id);
var sourceSheet1 = sourceSpreadsheet1.getSheetByName(sheet1Name);
var sourceSpreadsheet2 = SpreadsheetApp.openById(spreadsheet2Id);
var sourceSheet2 = sourceSpreadsheet2.getSheetByName(sheet2Name);
// 4. データを取得して新規シートに転記
var data1 = sourceSheet1.getDataRange().getValues(); // データ1を取得
newSheet1.getRange(1, 1, data1.length, data1[0].length).setValues(data1); // データ1を新規シート1に転記
var data2 = sourceSheet2.getDataRange().getValues(); // データ2を取得
newSheet2.getRange(1, 1, data2.length, data2[0].length).setValues(data2); // データ2を新規シート2に転記
// 5. データの突合と背景色の設定
var lastRow1 = newSheet1.getLastRow();
var lastRow2 = newSheet2.getLastRow();
var dataRange1 = newSheet1.getRange(1, 1, lastRow1, 1);
var dataRange2 = newSheet2.getRange(1, 1, lastRow2, 1);
var values1 = dataRange1.getValues();
var values2 = dataRange2.getValues();
var backgrounds1 = dataRange1.getBackgrounds();
var backgrounds2 = dataRange2.getBackgrounds();
for (var i = 0; i < values1.length; i++) {
for (var j = 0; j < values2.length; j++) {
if (values1[i][0].indexOf(values2[j][0]) !== -1) { // A列の値が部分一致したら
dataRange1.getCell(i+1, 1).setBackground('#F08080'); // 新規シート1の該当セルをピンク色に
dataRange2.getCell(j+1, 1).setBackground('#F08080'); // 新規シート2の該当セルをピンク色に
break;
}
}
}
// 6. 新規シートのみ別ファイルで保存
var ss = SpreadsheetApp.getActiveSpreadsheet();
var newSheet1Id = newSheet1.getSheetId(); // 新規シート1のIDを取得
var newSheet2Id = newSheet2.getSheetId(); // 新規シート2のIDを取得
var newSpreadsheet = SpreadsheetApp.create("新規シート"); // 新しいスプレッドシートを作成
var newSheet1Copy = ss.getSheetById(newSheet1Id).copyTo(newSpreadsheet); // 新規シート1を新しいスプレッドシートにコピー
var newSheet2Copy = ss.getSheetById(newSheet2Id).copyTo(newSpreadsheet); // 新規シート2を新しいスプレッドシートにコピー
newSpreadsheet.deleteSheet(newSpreadsheet.getSheetByName("Sheet1")); // デフォルトのシート1を削除
newSheet1Copy.setName(newSheet1.getName()); // 新規シート1の名前を設定
newSheet2Copy.setName(newSheet2.getName()); // 新規シート2の名前を設定
var newSpreadsheetUrl = newSpreadsheet.getUrl(); // 新しいスプレッドシートのURLを取得
Logger.log("新しいスプレッドシートのURLは " + newSpreadsheetUrl + " です。"); // ログに新しいスプレッドシートのURLを出力
}
// 7. ファイルIDの取得とログの出力
var newSpreadsheetId = newSpreadsheetFile.getId();
var newSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/" + newSpreadsheetId;
Logger.log(newSheet1.getName() + "のデータを保存しました。URL:" + newSpreadsheetUrl);
var newSpreadsheetId2 = newSpreadsheetFile2.getId();
var newSpreadsheetUrl2 = "https://docs.google.com/spreadsheets/d/" + newSpreadsheetId2;
Logger.log(newSheet2.getName() + "のデータを保存しました。URL:" + newSpreadsheetUrl2);
}
解説
- 6.新規シートのみ別ファイルで保存
- このコードでは、まず
SpreadsheetApp.create()
を使用して新しいスプレッドシートを作成し、copyTo()
を使用して新規シート1をコピーしています。次に、setName()
を使用して新しいスプレッドシートのシート名を設定し、deleteSheet()
を使用して不要なシートを削除しています。最後に、getId()
を使用して新しいスプレッドシートのIDを取得しています。
- このコードでは、まず
- 7.ファイルIDの取得とログの出力
- 上記スクリプトの「保存先フォルダのID」には、保存先となるGoogle DriveのフォルダのIDを入力してください。また、スプレッドシートをExcelファイルに変換して保存するため、保存先のフォルダにExcelファイルを保存することができることを確認してください。
カラーで抽出を加える
function OtherSheet() {
// 1. 取得元スプレッドシートの情報
var sheet1Name = "<シート1名>"; // 取得するシート1名
var spreadsheet1Id = <シート1のID>>"; // 取得元スプレッドシート1のID
var sheet2Name = "<シート2名>"; // 取得するシート2名
var spreadsheet2Id = "<シート2のID>"; // 取得元スプレッドシート2のID
// 2. 新規シートの作成
var date = new Date();
var formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy/MM/dd HH:mm:ss"); // 現在の日付と時刻を取得
var newSheet1 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet1Name); // 新しいシート1を作成
var newSheet2 = SpreadsheetApp.getActiveSpreadsheet().insertSheet(formattedDate + "_" + sheet2Name); // 新しいシート2を作成
// 3. 取得元スプレッドシートのシートを取得
var sourceSpreadsheet1 = SpreadsheetApp.openById(spreadsheet1Id);
var sourceSheet1 = sourceSpreadsheet1.getSheetByName(sheet1Name);
var sourceSpreadsheet2 = SpreadsheetApp.openById(spreadsheet2Id);
var sourceSheet2 = sourceSpreadsheet2.getSheetByName(sheet2Name);
// 4. データを取得して新規シートに転記
var data1 = sourceSheet1.getDataRange().getValues(); // データ1を取得
newSheet1.getRange(1, 1, data1.length, data1[0].length).setValues(data1); // データ1を新規シート1に転記
var data2 = sourceSheet2.getDataRange().getValues(); // データ2を取得
newSheet2.getRange(1, 1, data2.length, data2[0].length).setValues(data2); // データ2を新規シート2に転記
// 5. データの突合と背景色の設定
var lastRow1 = newSheet1.getLastRow();
var lastRow2 = newSheet2.getLastRow();
var dataRange1 = newSheet1.getRange(1, 1, lastRow1, 1);
var dataRange2 = newSheet2.getRange(1, 1, lastRow2, 1);
var values1 = dataRange1.getValues();
var values2 = dataRange2.getValues();
var backgrounds1 = dataRange1.getBackgrounds();
var backgrounds2 = dataRange2.getBackgrounds();
for (var i = 0; i < values1.length; i++) {
for (var j = 0; j < values2.length; j++) {
if (values1[i][0] == values2[j][0]) { // A列の値が一致したら
dataRange1.getCell(i+1, 1).setBackground('#F08080'); // 新規シート1の該当セルをピンク色に
dataRange2.getCell(j+1, 1).setBackground('#F08080'); // 新規シート2の該当セルをピンク色に
break;
}
}
var lastRow1 = newSheet1.getLastRow();
var range1 = newSheet1.getRange(1, 1, lastRow1, newSheet1.getLastColumn());
range1.createFilter();
var pinkRows = range1.getBackgrounds()
.map((row, i) => row[0] === '#F08080' ? i + 1 : null)
.filter(row => row !== null);
var filteredRange1 = range1.offset(1, 0)
.getRows()
.filter((_, i) => pinkRows.includes(i + 1));
var newSpreadsheet = SpreadsheetApp.create("新しいスプレッドシートの名前");
var newSheet = newSpreadsheet.getActiveSheet();
newSheet.getRange(1, 1, filteredRange1.length, filteredRange1[0].length)
.setValues(filteredRange1);
}
コメント