0

非常に多くのユーザーによるレポートにGoogleスプレッドシートを使用しています。現在のユーザーに応じて特定のシートを開く基本的なスクリプトを作成しました。

var CurrentUser = Session.getUser().getEmail()
var ss = SpreadsheetApp.getActive();
  switch(CurrentUser){
    case "usermail1@gmail.com":
      SpreadsheetApp.setActiveSheet(ss.getSheetByName("sheet1"));
      break;
    case "usermail2@gmail.com":
      SpreadsheetApp.setActiveSheet(ss.getSheetByName("sheet2"));
      break;
    case "usermail3@gmail.com":
      SpreadsheetApp.setActiveSheet(ss.getSheetByName("sheet3"));
      break;
    etc...

userdataとsheetnamesを外部テーブルに入れて、そのテーブルに応じてこれらのデータを取得したいので、電子メールとユーザーのリストを維持しやすくなります。特定のGoogleスプレッドシートからデータを取得し、それに応じてスクリプトを機能させるにはどうすればよいですか?

4

1 に答える 1

0

あなたはこれを試すことができます。別のシートでをシミュレートVLOOKUPし、現在のブックの「一致した」シートに切り替えます。これは不一致を処理しませんが、ケースに合わせて追加するのは比較的簡単です。

function switchSheets() {
  // Current sheet
  var ss = SpreadsheetApp.getActive();
  // Target sheet (using the key found in the URL)
  var target = SpreadsheetApp.openById("my_other_sheet_id");
  var rows = target.getDataRange();
  var values = rows.getValues();

  // Get the current user
  var CurrentUser = Session.getUser().getEmail();

  // Now iterate through all of the rows in your target sheet,
  // looking for a row that matches your current user (this assumes that
  // it will find a match - you'll want to handle non-matches as well)
  for (var i = 1; i <= rows.getNumRows() - 1; i++) {
    // Match the leftmost column
    var row = values[i][0];
    if (row == CurrentUser) {
      // If we match, grab the corresponding sheet (one column to the right)
      target_sheet = values[i][1];
      break;
    }
  }
  // Now switch to the matched sheet (rememeber to handle non-matches)
  ss.setActiveSheet(ss.getSheetByName(target_sheet));
};
于 2012-11-12T15:32:08.453 に答える