2015年5月20日水曜日

Google Spreadsheetのスクリプトで列のアルファベットと数値の相互変換

Google Apps Script(GAS)を使用して、列のアルファベットを数値に変換したり、その逆を行うスクリプトを作成してみた。
Google Spreadsheetの場合、A列は 0 となる。
⇒A列は 1 でした。。。getValues()で使用していたため、0としてました。。。
 個々の関数は、すべて 0 基準としています。

数値->アルファベット

function ConvertToLetter(iCol) {
  var str = "";
  var iAlpha = 0;
  var iRemainder = 0;
  
  iAlpha = parseInt((iCol / 26), 10);
  iRemainder = iCol - (iAlpha * 26);
  if(iAlpha > 0) {
    str = String.fromCharCode(iAlpha + 64);
  }
  if(iRemainder >= 0) {
    str = str + String.fromCharCode(iRemainder + 65);
  }
  return str;
}

アルファベット->数値

function ConvertToNumber(strCol) {  
  var iNum = 0;
  var temp = 0;
  
  strCol = strCol.toUpperCase();
  for (i = strCol.length - 1; i >= 0; i--) {
    temp = strCol.charCodeAt(i) - 65; // 現在の文字番号;
    if(i != strCol.length - 1) {
      temp = (temp + 1) * Math.pow(26,(i + 1));
    }
    iNum = iNum + temp
  }
  return iNum;
}

サンプル

function sample(){
  var str = ConvertToLetter(0);   // A
  var str2 = ConvertToLetter(2);  // C
  var str3 = ConvertToLetter(5);  // F
  var str4 = ConvertToLetter(6);  // G
  var str5 = ConvertToLetter(11); // L
  var str6 = ConvertToLetter(25); // Z
  var str7 = ConvertToLetter(26); // AA

  var num = ConvertToNumber("A");   // 0
  var num2 = ConvertToNumber("C");  // 2
  var num3 = ConvertToNumber("F");  // 5
  var num4 = ConvertToNumber("G");  // 6
  var num5 = ConvertToNumber("L");  // 11
  var num6 = ConvertToNumber("Z");  // 25
  var num7 = ConvertToNumber("AA"); // 26
  
  return;
}