ユーザ用ツール

サイト用ツール


gas

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
gas [2023/07/19 17:14] 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>
  
 ==== ループ処理 ==== ==== ループ処理 ====
 === for of 文 === === for of 文 ===
-配列の中身をすべて処理したい場合は ** for of ** を使用する。+配列の中身をすべて処理したい場合は '' for of '' を使用する。
 <code javascript> <code javascript>
 for(変数 of 配列){ for(変数 of 配列){
行 46: 行 56:
 |numColumns|範囲に含まれる列の数を指定。| |numColumns|範囲に含まれる列の数を指定。|
  
-<code>+=== ヘッダー行のみを取得する === 
 +<code javascript> 
 +const headerRow = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0]; 
 +</code> 
 + 
 +=== シートのA2からデータのある最後の行までのデータを取得する === 
 +<code javascript> 
 +var values = sheet.getRange(2,1,sheet.getLastRow()-1,1).getValues(); // A2から最後の行までのデータを読み込む。 
 +</code> 
 + 
 +==== 文字列と数値の変換 ==== 
 +文字列から数値に変換するには 
 +<code javascript> 
 +var string = '123456'; 
 +var num = Number(string); 
 +var inum = parseInt(string); 
 +</code> 
 +を使用する。逆に、数値から文字列に変換するには 
 +<code javascript> 
 +var num = 123456; 
 +var str = num.toString(); 
 +</code> 
 +のように記載する。 
 + 
 +==== 文字列操作 ==== 
 +=== 置換 === 
 +文字列を置換するには、''replace()''メソッドを使用する。 
 +これは、第1引数の文字を第2引数の文字に置換する。 
 +例えば、123,456 からカンマを取り除く場合は 
 +<code javascript> 
 +var str = '123,456'; 
 +var str2 = str.replace(",",""
 +</code> 
 +正規表現を使うことも可能。RegExpオブジェクトを用いる。gオプションを付けると複数回の置換も一度で行うことができる。 
 +<code javascript> 
 +let replaceWord = /aaa/g; 
 +doc = doc.replace(replaceWord, "bbb"); 
 +</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:mutablelist|mutable(可変長)リストを使用してヘッダー名で参照する]] 
 +  * [[gas:example:http_client|HTTPクライアントでのWebアクセス]] 
 +  * [[gas:example:textcopy|処理したテキストをwebページに表示し、ボタンでクリップボードにコピーする]] 
 +  * [[gas:example:mutable_to_csv|mutableリストからCSVに変換する]] 
 +<code javascript>
 function exportToCSV() { function exportToCSV() {
   var spreadsheetId = "<spread sheet ID>"; // スプレッドシートのIDを指定   var spreadsheetId = "<spread sheet ID>"; // スプレッドシートのIDを指定
行 82: 行 196:
 } }
 </code> </code>
 +
gas.1689754466.txt.gz · 最終更新: 2023/07/19 17:14 by mikoto