gas
                差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| gas [2023/07/25 15:46] – mikoto | gas [2023/09/06 18:14] (現在) – mikoto | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== Google App Script ====== | ====== Google App Script ====== | ||
| + | [[start|一つ上へ]] | ||
| ===== スプレッドシート ===== | ===== スプレッドシート ===== | ||
| 行 22: | 行 22: | ||
| var range = sheet.getDataRange(); | var range = sheet.getDataRange(); | ||
| var values = range.getValues(); | var values = range.getValues(); | ||
| + | </ | ||
| + | |||
| + | ==== 配列 ==== | ||
| + | === 配列の中に特定の値が含まれているかどうかの判定 === | ||
| + | 配列に対してincludes(" | ||
| + | column_nameが含まれる場合にヘッダーを追加する場合は以下のようになる | ||
| + | <code javascript> | ||
| + | if(headerRows.includes(" | ||
| + | headerRows.push(" | ||
| + | } | ||
| </ | </ | ||
| 行 45: | 行 55: | ||
| |numRows|範囲に含まれる行の数を指定。| | |numRows|範囲に含まれる行の数を指定。| | ||
| |numColumns|範囲に含まれる列の数を指定。| | |numColumns|範囲に含まれる列の数を指定。| | ||
| + | |||
| + | === ヘッダー行のみを取得する === | ||
| + | <code javascript> | ||
| + | const headerRow = sheet.getRange(1, | ||
| + | </ | ||
| === シートのA2からデータのある最後の行までのデータを取得する === | === シートのA2からデータのある最後の行までのデータを取得する === | ||
| 行 64: | 行 79: | ||
| </ | </ | ||
| のように記載する。 | のように記載する。 | ||
| + | |||
| + | ==== 文字列操作 ==== | ||
| + | === 置換 === | ||
| + | 文字列を置換するには、'' | ||
| + | これは、第1引数の文字を第2引数の文字に置換する。 | ||
| + | 例えば、123, | ||
| + | <code javascript> | ||
| + | var str = ' | ||
| + | var str2 = str.replace(",","" | ||
| + | </ | ||
| + | 正規表現を使うことも可能。RegExpオブジェクトを用いる。gオプションを付けると複数回の置換も一度で行うことができる。 | ||
| + | <code javascript> | ||
| + | let replaceWord = /aaa/g; | ||
| + | doc = doc.replace(replaceWord, | ||
| + | </ | ||
| + | === 日付を文字列に変換 === | ||
| + | <code javascript> | ||
| + | // | ||
| + | let today = new Date(); | ||
| + | // | ||
| + | Logger.log(today); | ||
| + | // | ||
| + | today = Utilities.formatDate(today, | ||
| + | // | ||
| + | Logger.log(today); | ||
| + | </ | ||
| + | |||
| + | === 文字列の連結 === | ||
| + | 文字列を連結するには、'' | ||
| + | <code javascript> | ||
| + | let str1 = " | ||
| + | let str2 = " | ||
| + | let str3 = str1 + str2; | ||
| + | </ | ||
| + | あるいは | ||
| + | <code javascript> | ||
| + | let str1 = " | ||
| + | let str2 = " | ||
| + | let str3 = str1.concat(str2); | ||
| + | </ | ||
| + | |||
| + | ==== CSVコンテンツの作成 ==== | ||
| + | まず、mutablelist の最初の要素を取得する。この要素はキーと値を持つオブジェクトになっているので、 | ||
| + | '' | ||
| + | これに対して'' | ||
| + | <code javascript> | ||
| + | const headerRow = Object.keys(mutableList[0]).join("," | ||
| + | </ | ||
| + | |||
| + | 次に | ||
| + | <code javascript> | ||
| + | const dataRows = mutableList.map(rowData => { | ||
| + | return Object.values(rowData).map(value => { | ||
| + | if (typeof value === " | ||
| + | return '"' | ||
| + | } | ||
| + | return value; | ||
| + | }).join("," | ||
| + | }); | ||
| + | </ | ||
| + | の各処理の内容について。 | ||
| + | '' | ||
| + | * mutableList 内の各オブジェクトに対してループ処理を行う。 | ||
| + | * rowData はループ内で扱う各オブジェクト。 | ||
| + | |||
| + | '' | ||
| + | rowData でオブジェクト内の各値(プロパティの値)に対してループ処理を行う。 | ||
| + | Object.values(rowData) は rowData 内の値を配列として取得する。 | ||
| + | value はループ内で扱う各値を示す。 | ||
| + | |||
| + | '' | ||
| + | value が文字列であり、かつカンマ , を含む場合にCSV内で特殊文字として扱われる可能性のあるカンマをエスケープする。 | ||
| + | 例えば、文字列内にカンマがある場合、ダブルクォーテーションで囲むことでエスケープする。 | ||
| + | また、既にダブルクォーテーションが含まれている場合は、二重のダブルクォーテーションに変換する。 | ||
| ===== プログラム例 ===== | ===== プログラム例 ===== | ||
| * [[gas: | * [[gas: | ||
| + | * [[gas: | ||
| + | * [[gas: | ||
| + | * [[gas: | ||
| + | * [[gas: | ||
| <code javascript> | <code javascript> | ||
| function exportToCSV() { | function exportToCSV() { | ||
gas.1690267571.txt.gz · 最終更新: 2023/07/25 15:46 by mikoto
                
                