質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

1回答

2565閲覧

スプレッドシートGASでの配列

loulou

総合スコア8

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2017/04/11 15:41

編集2017/05/08 01:25

日付とテキストの書いてあるセルを、月日別にまとめ、改行のあるメールとして送信したいと思っています。
そのためにまずはGASを勉強したいので、自分用のテンプレートなどを練習がてら作っているところです。

今回は範囲(下記)でなく、セルごとの取得がしてみたいと思っています。その後日ごとや改行などにステップアップしていきたいです。練習の仕方として根本的に間違っていたら指摘をお願い致します。

function myFunction3() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('シート1');

var value = sheet.getRange("A1:A5");

for(var a=0; a<=5; a++) {
var ary = [];
if(a=1){
ary.push("A1");
}
else if(a=2) {
ary.push("A2");
}

}
Logger.log(ary.getValues());
}

A列最終行の数値がわからないためとりあえずの数でやっておりますがこれでも終了してくれません。
中が間違っているのでしょうが自分ではわかりませんでした。


下記の範囲のコピー&ペーストが理解できたので次のステップに進みたかったのですが・・・。

function myFunction2() {
//1. 現在のスプレッドシートを取得
//2. 現在のシートを取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet01 = ss.getSheetByName('取込');

//3. 指定するセルの範囲("~")を取得
//var targetSheet01 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('取込');
var range = targetSheet01.getRange("A1:A3");

//ログに出力して確認 スクリプト→表示→ログ
Logger.log(range.getValues());

GmailApp.sendEmail("ここにアドレス","テストメール",range.getValues());

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/04/12 05:21

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答1

0

ベストアンサー

>これでも終了してくれません。

ひとまずこれを解決したいということでしょうか?

以下コードで、a=1などというコードがありますが、「=」は代入の演算子です。

if(a=1){
ary.push("A1");
}
else if(a=2) {
ary.push("A2");
}

恐らくやりたいことは「比較」だと思います。該当の演算子は「==」です。「等しい」ということを判定します。
a==1などと書き換えれば、恐らく「終了しない」という事象は解決するかと思います。

現状、if(a=1)を通るたびにaに1が代入されてしまっているため、for文の終了条件a<=5が永久に有効にならず、無限ループしてしまっていると思います。

参考サイト

投稿2017/04/12 05:16

akabee

総合スコア1947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

loulou

2017/05/10 21:59 編集

ありがとうございます。 おかげでなんとかこなすことが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問