Masayan tech blog.

  1. ブログ記事一覧>
  2. 【GAS】のサンプルコード(Typescript)をいくつか公開します

【GAS】のサンプルコード(Typescript)をいくつか公開します

公開日

環境

  • windows10
  • node v14.17.4
  • npm 6.14.14
  • TypeScript 4.4.4
  • VsCode
  • gitbash 2.32.0.1

ソースコード

リポジトリ

https://github.com/masayan1126/my-gas

フォルダ構成

  • app\src\parts
    特定の処理をメソッド単位でコンポーネント化したコードを置いています
  • app\src\programs
    コンポーネントを使用する具体的なprogramのコードを置いています

詳細

いくつかサンプルコードを載せておきます

指定列の最終行を取得する

app\src\parts\gainLastRow.ts

/**
 * 対象シート全体の最終行の値と対象列をもとに、その列の最終行を取得します。
 * 組み込みのgetLastRowだと、列の途中に空白があると対応できないため実装
 * @param  {GoogleAppsScript.Spreadsheet.Sheet} sheet
 * @param  {number} lastRowOverallSheet
 * @param  {number} targetColumn
 * @returns nu
 */
function gainLastRow(
  sheet: GoogleAppsScript.Spreadsheet.Sheet,
  lastRowOverallSheet: number,
  targetColumn: number
): number {
  var range = sheet.getRange(1, targetColumn, lastRowOverallSheet, targetColumn).getValues();

  // 初回のループ時にセルが空白だったら、targetColumnの最終行とlastRowOverallSheetは等しい(シート全体の最終列)
  for (let i = lastRowOverallSheet - 1; i >= 0; i--) {
    if (range[i][0] != '') {
      return i + 1;
    }
  }
}

app\src\parts\regexReplace.ts

取得したセル値に対して正規表現を行う

/**
 * 文字列に正規表現を適用して一致する文字列を返します
 *
 * @param  {string} str
 * @param  {string} regex
 * @returns any
 */
function regexReplace(str: string, regex: string): any {
  return str.match(regex) === null ? str : str.match(regex);
}

n列の値に何か処理した結果をn+1列に出力する

partsフォルダ内のコンポーネントをいくつか組み合わせてプログラムを実行しています

app\src\programs\outPutNextTheColumn.ts

/**
 * 特定の列の右隣に特定の値を出力します
 *
 * @param  {string} inputSheetName
 * @param  {number} inputColumn
 * @param  {number} startRow
 */
function outPutNextTheColumn(inputSheetName: string, inputColumn: number, startRow: number) {
  const inputSheet = initSheet(inputSheetName);

  const lastRowOverallSheet = inputSheet.getLastRow();
  const theLastRow = gainLastRow(inputSheet, lastRowOverallSheet, inputColumn);
  const outputColumn = inputColumn + 1;
  const rangeValues = gainValuesTheColumn(inputSheet, startRow, inputColumn, theLastRow);

  //ここで何か配列を加工する

  writeValues(inputSheet, flattenValues(rangeValues), startRow, outputColumn);
}

今後も積極的に追加していきます。

まとめ

いかがでしたでしょうか。本記事では、GASのサンプルコード(Typescript)をいくつか公開しています。これまでに紹介した記事に沿って実際に作成したいくつかのコードを紹介します。