作成目的
- 特定のスプレッドシート情報を二次元配列で取得する必要が出たため作成
手順/方法
- 指定のスプレッドシートオブジェクトを取得する
- URL指定で取得 →
SpreadsheetApp.openByUrl('指定のURL')
を使用する - URL未指定で取得 →
SpreadsheetApp.getActiveSpreadsheet()
を使用する
- URL指定で取得 →
- 二次元配列を準備する
- 以下の情報を取得し、配列の
pushメソッド
で二次元配列へ順々に入れていく- 現在日時
- スプレッドシート ファイル名
- ログインユーザーメールアドレス
- スプレッドシート URL
- スプレッドシート 全シート名
- 最終的に、
return
で取得したスプレッドシート情報を二次元配列でかえす
具体例
- 他の関数内で
getSpreadsheetInfo('https://docs.google.com/spreadsheets/d/?????/xxxxx');
とすれば、使い回すことができます
get_spreadsheet_info.gs
/*
* スプレッドシートの情報を取得する
*
* @param {string} 情報取得するスプレッドシートURL
* @return {array} 二次元配列
*
* TODO: 今後、他の情報取得も随時追加する
*/
function getSpreadsheetInfo(target_spreadsheet_url) {
// パラメータ未指定の場合、本スクリプトを実装したスプレッドシートを対象とする
if(!target_spreadsheet_url){
var target_spreadsheet_object = SpreadsheetApp.getActiveSpreadsheet();
} else {
var target_spreadsheet_object = SpreadsheetApp.openByUrl(target_spreadsheet_url);
}
// 二次元配列を準備する(初期化)
var spreadsheet_info = [[]];
// 現在日時
var notification_date = Utilities.formatDate(new Date(), 'JST' , 'yyyy/MM/dd HH:mm:ss');
spreadsheet_info[0].push(notification_date);
// スプレッドシート ファイル名
var spreadsheet_name = target_spreadsheet_object.getName();
spreadsheet_info[0].push(spreadsheet_name);
// ログインユーザーメールアドレス
var objUser = Session.getActiveUser();
var active_user_mail_address = objUser.getEmail();
spreadsheet_info[0].push(active_user_mail_address);
// スプレッドシートURL
var spreadsheet_url = target_spreadsheet_object.getUrl();
spreadsheet_info[0].push(spreadsheet_url);
// スプレッドシート 全シート名
var sheets_object = target_spreadsheet_object.getSheets();
var sheets_name = '';
if (sheets_object.length >= 1) {
for(var i = 0; i < sheets_object.length; i++){
sheets_name += "|" + sheets_object[i].getName();
}
}
spreadsheet_info[0].push(sheets_name);
return spreadsheet_info;
}