Help us understand the problem. What is going on with this article?

【GoogleAppsScript】URLで指定したスプレッドシート情報を二次元配列で取得する

More than 1 year has passed since last update.

作成目的

  • 特定のスプレッドシート情報を二次元配列で取得する必要が出たため作成

手順/方法

  1. 指定のスプレッドシートオブジェクトを取得する
    • URL指定で取得 → SpreadsheetApp.openByUrl('指定のURL') を使用する
    • URL未指定で取得 → SpreadsheetApp.getActiveSpreadsheet() を使用する
  2. 二次元配列を準備する
  3. 以下の情報を取得し、配列の pushメソッド で二次元配列へ順々に入れていく
    • 現在日時
    • スプレッドシート ファイル名
    • ログインユーザーメールアドレス
    • スプレッドシート URL
    • スプレッドシート 全シート名
  4. 最終的に、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;

}

tomo-hawk
◆業委としてIT企業常駐(リモート), 人が繋がるイベント開催, App開発目論む傍ら動画編集トライ中! ◆組込系S/W updateとりまとめ, QC/QA(System/App検証管理etc.), Server構築, 業務改善 ◆ShellScript, Perl, VBA, Ruby, GoogleAppsScript, Python ◆映画観賞, 読書
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away