前提・実現したいこと
GASでスプレッドシートのデータをcsvファイルとしてローカル保存したいです。
条件に当てはまる行の特定の項目(列)のデータのみ出力したいのですが、2回目以降出力されるデータが以下になります。
実行一度目は成功します。
body,
iframe {border: 0; display: block; height: 100%; margin: 0; padding: 0; width: 100%;}iframe#userHtmlFrame {overflow-y: scroll; -webkit-overflow-scrolling: touch;}</style><meta name="chromevox" content-script="no"><script type="text/javascript" src="/static/macros/client/js/1470202862-mae_html_user_bin_i18n_mae_html_user__ja.js" nonce="####"></script><script nonce="####">maeInit_( true );</script><iframe id="userHtmlFrame" allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speake *; usb *; vibrate *; vr *" src="/blank"></iframe><form id="example_form"></form>
一度目の実行では以下のように抽出した項目がCSVで保存できました。
1000,###@###.com,氏名,番号,フルーツシリーズ,レモンはトッピング選べます
GAS
以下他サイト引用したものに、列・行指定追加しました。
//メールリンク登録用の.csvファイル出力
function main() {
// dialog.html をもとにHTMLファイルを生成
// evaluate() は dialog.html 内の GAS を実行するため( <?= => の箇所)
var html = HtmlService.createTemplateFromFile("dialog").evaluate();
// 上記HTMLファイルをダイアログ出力
SpreadsheetApp.getUi().showModalDialog(html, "ファイルダウンロード");
}
function getData() {
// スプレッドシート上の値を二次元配列の形で取得
var sheet = SpreadsheetApp.getActiveSheet();
var lastrow = sheet.getLastRow();
var values = sheet.getDataRange().getValues();
// 二次元配列をCSV形式のテキストデータに変換
var dataArray = [];
for (var i = 0; i < values.length; i++)
if(values[i][2] !== ''){}
else if(values[i][17].match('リンゴ') && values[i][29]=='レモン'){
var txt = [values[i][15],values[i][20],values[i][6],values[i][28],values[i][3],'レモンはトッピング選べます']
dataArray.push(txt.join(","));
}else if (values[i][17].match('リンゴ') && values[i][29]==''){
var txt = [values[i][15],values[i][20],values[i][6],values[i][28],values[i][3],'']
dataArray.push(txt.join(","));
}
return dataArray.join("\r\n"); // 改行コードは windows を想定
}
回答1件
あなたの回答
tips
プレビュー