ユーザ用ツール

サイト用ツール


gas

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gas [2023/07/25 16:01] – [文字列操作] 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>
  
行 45: 行 55:
 |numRows|範囲に含まれる行の数を指定。| |numRows|範囲に含まれる行の数を指定。|
 |numColumns|範囲に含まれる列の数を指定。| |numColumns|範囲に含まれる列の数を指定。|
 +
 +=== ヘッダー行のみを取得する ===
 +<code javascript>
 +const headerRow = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];
 +</code>
  
 === シートのA2からデータのある最後の行までのデータを取得する === === シートのA2からデータのある最後の行までのデータを取得する ===
行 79: 行 94:
 doc = doc.replace(replaceWord, "bbb"); doc = doc.replace(replaceWord, "bbb");
 </code> </code>
 +=== 日付を文字列に変換 ===
 +<code javascript>
 +//実行した日付のオブジェクトをtoday変数に格納する
 +let today = new Date();
 +//Dateオブジェクトのtoday変数をログ出力する
 +Logger.log(today);
 +//formatDateメソッドで日付の表示形式を変換する
 +today = Utilities.formatDate(today, "JST", "yyyy/MM/dd");
 +//formatDateメソッドで変換後をログ出力する
 +Logger.log(today);
 +</code>
 +
 +=== 文字列の連結 ===
 +文字列を連結するには、''+'' 演算子か''concat()''メソッドを使用する。
 +<code javascript>
 +let str1 = "String1";
 +let str2 = "String2";
 +let str3 = str1 + str2;
 +</code>
 +あるいは
 +<code javascript>
 +let str1 = "String1";
 +let str2 = "String2";
 +let str3 = str1.concat(str2);
 +</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:http_client|HTTPクライアントでのWebアクセス]]
 +  * [[gas:example:textcopy|処理したテキストをwebページに表示し、ボタンでクリップボードにコピーする]]
 +  * [[gas:example:mutable_to_csv|mutableリストからCSVに変換する]]
 <code javascript> <code javascript>
 function exportToCSV() { function exportToCSV() {
gas.1690268500.txt.gz · 最終更新: 2023/07/25 16:01 by mikoto