gas
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
gas [2023/07/25 15:54] – [文字列と数値の変換] 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からデータのある最後の行までのデータを取得する === | ||
行 74: | 行 89: | ||
var str2 = str.replace(",","" | 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.1690268045.txt.gz · 最終更新: 2023/07/25 15:54 by mikoto