環境
- 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)をいくつか公開しています。これまでに紹介した記事に沿って実際に作成したいくつかのコードを紹介します。