ユーザ用ツール

サイト用ツール


gas

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gas [2023/08/07 12:51] – [シートの範囲を指定する] mikotogas [2023/09/06 18:14] (現在) mikoto
行 1: 行 1:
 ====== Google App Script ====== ====== Google App Script ======
 +[[start|一つ上へ]]
  
 ===== スプレッドシート ===== ===== スプレッドシート =====
行 22: 行 22:
 var range = sheet.getDataRange(); // これで、データがある領域のrectangle を取得できる。 var range = sheet.getDataRange(); // これで、データがある領域のrectangle を取得できる。
 var values = range.getValues(); var values = range.getValues();
 +</code>
 +
 +==== 配列 ====
 +=== 配列の中に特定の値が含まれているかどうかの判定 ===
 +配列に対してincludes("value") を指定すると、値が含まれている場合はtrue、含まれない場合はfalse を返す。
 +column_nameが含まれる場合にヘッダーを追加する場合は以下のようになる
 +<code javascript>
 +if(headerRows.includes("column_name")) {
 +  headerRows.push("header1","header2",...);
 +}
 </code> </code>
  
行 49: 行 59:
 <code javascript> <code javascript>
 const headerRow = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0]; const headerRow = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];
 +</code>
  
 === シートのA2からデータのある最後の行までのデータを取得する === === シートのA2からデータのある最後の行までのデータを取得する ===
行 108: 行 119:
 let str3 = str1.concat(str2); let str3 = str1.concat(str2);
 </code> </code>
 +
 +==== CSVコンテンツの作成 ====
 +まず、mutablelist の最初の要素を取得する。この要素はキーと値を持つオブジェクトになっているので、
 +''Object.keys(mutableList[0])'' によってそのキーを配列として取得することが出来る。
 +これに対して''.joni(",")''を作用させることで、各キーをカンマ区切りの文字列とすることが出来る。
 +<code javascript>
 +const headerRow = Object.keys(mutableList[0]).join(",");
 +</code>
 +
 +次に
 +<code javascript>
 +const dataRows = mutableList.map(rowData => {
 +  return Object.values(rowData).map(value => {
 +    if (typeof value === "string" && value.includes(",")) {
 +      return '"' + value.replace(/"/g, '""') + '"';
 +    }
 +    return value;
 +  }).join(",");
 +});
 +</code>
 +の各処理の内容について。
 +''mutableList.map(rowData => {...})''
 +  * mutableList 内の各オブジェクトに対してループ処理を行う。
 +  * rowData はループ内で扱う各オブジェクト。
 +
 +''Object.values(rowData).map(value => {...})'' については、
 +rowData でオブジェクト内の各値(プロパティの値)に対してループ処理を行う。
 +Object.values(rowData) は rowData 内の値を配列として取得する。
 +value はループ内で扱う各値を示す。
 +
 +''if (typeof value === "string" && value.includes(",")) {...}'' については、
 +value が文字列であり、かつカンマ , を含む場合にCSV内で特殊文字として扱われる可能性のあるカンマをエスケープする。
 +例えば、文字列内にカンマがある場合、ダブルクォーテーションで囲むことでエスケープする。
 +また、既にダブルクォーテーションが含まれている場合は、二重のダブルクォーテーションに変換する。
 +
 ===== プログラム例 ===== ===== プログラム例 =====
   * [[gas:example:checkdigit|チェックデジットの計算]]   * [[gas:example:checkdigit|チェックデジットの計算]]
   * [[gas:example:mutablelist|mutable(可変長)リストを使用してヘッダー名で参照する]]   * [[gas:example:mutablelist|mutable(可変長)リストを使用してヘッダー名で参照する]]
 +  * [[gas:example:http_client|HTTPクライアントでのWebアクセス]]
 +  * [[gas:example:textcopy|処理したテキストをwebページに表示し、ボタンでクリップボードにコピーする]]
 +  * [[gas:example:mutable_to_csv|mutableリストからCSVに変換する]]
 <code javascript> <code javascript>
 function exportToCSV() { function exportToCSV() {
gas.1691380276.txt.gz · 最終更新: 2023/08/07 12:51 by mikoto