google app scriptとJSの練習で、スプレッドシートに
<完成形>
このように、forによって入力したいのですが、3時間ほどハマっています。
かなり初歩的だとは思うのですが、どのようなコード・考えで入力すべきでしょうか。
現状の未完成コードは以下になります。
function myFunction() { const spreadSheet = SpreadsheetApp.getActiveSpreadsheet() const sheet = spreadSheet.getActiveSheet() // 変数iが4になるまで1を足し続けよ for (let i= 1; i <= 4; i++) { // 変数jが4になるまで1を足し続けよ for (let j= 1; j <= 4; j++) { let range = sheet.getRange(i ,j) range.setValue("A"+ j) } }
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
完成系の絵があるのはとてもいいですね。
分かりやすいです。
もう一点、今起こっている上手く行っていない事も伝えるともっと良い質問になったかと思います。
つまり、BCD列に想定した値が入らなかったのが問題点な訳ですね。
とりあえず、質問者さんは練習とのことなんで既存コードに手を入れた方がいいのでしょう。
ポイントは1, 2, 3, 4
をA, B, C, D
に置き換えられればクリアなわけでその方法は、
errormaker74さんの配列番号と文字を紐づける方法がシンプルで分かりやすく、ほかの言語でも活用できる方法と思います。
その他の方法としては、GAS専用ですがこんなのがあります。
Range.getA1Notation()
https://developers.google.com/apps-script/reference/spreadsheet/range
gas
1let cellName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1 ,1).getA1Notation(); 2Logger.log(cellName); // 'A1'と出力する
どう考えるかの観点では私の回答は微妙ですが
まずはそういう機能が元から用意されているかどうかを調べ、あったらそれを使おう
という感じです。(無かったら自力実装ですがw)
頑張ってください。
投稿2021/01/31 00:55
編集2021/01/31 00:57退会済みユーザー
総合スコア0
0
ベストアンサー
サンプルのコードを書いてみました。
ループ内で1セルずつ書き込むとおそらくリクエストのAPI制限がかかると思います。
必要なデータを作成してから1度で書き込むほうが良いでしょう。
function myFunction() { const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const sheet = spreadSheet.getActiveSheet(); // 行のデータ let rows = ["A","B","C","D"]; // 書き込む列数 let cols = 4 // スプレッドシートに代入するためのデータ let data = []; for (let i=1;i<=cols;i++) { var row = []; rows.forEach(function(value){ row.push(value.concat(i.toString())); }) data.push(row) } // スプレッドシートに1,1のセル位置から範囲指定して代入 sheet.getRange(1,1,rows.length,cols).setValues(data); }
== 追記 ==
「列数は100まで最終的にZに100Zと入力したい」という点について以下に加筆します。
サンプルのコードを書いてみました。
gas
1function myFunction() { 2 3 const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); 4 const sheet = spreadSheet.getActiveSheet(); 5 6 // 列名 7 let cols = [ 8 "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" 9 ]; 10 11 // 行数 12 let rows = 100; 13 14 let data = []; 15 // 行数分だけループ 16 for (let i=1;i<=rows;i++) { 17 var row = []; 18 // 列数分だけループ 19 cols.forEach(function(value){ 20 row.push(value.concat(i.toString())); 21 }) 22 data.push(row) 23 } 24 25 // スプレッドシートに1,1のセル位置から範囲指定して代入 26 sheet.getRange(1,1,rows,cols.length).setValues(data); 27 28}
投稿2021/01/31 00:19
編集2021/01/31 09:06総合スコア230
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/31 09:09
2021/01/31 09:39 編集
2021/01/31 09:57
2021/01/31 10:07
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/31 09:38
2021/01/31 10:00