teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

誤字を修正

2020/09/10 07:14

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  - 以下のコードでは、名前・誕生日・メールアドレスなどのリストが書かれたシートを(便宜的に)「シート1」としている。もっとふさわしいシート名を付けているなら、`getSheetByName`の引数を変更すること。このシートのオブジェクトを`sheet1`として取得し、リスト全体を`values`に読み込んでいる。
5
5
  - 「本文」シートのオブジェクトは`sheet2`として取得し、A1セルに書かれた本文を`text`に読み込んでいる。そういえば、件名のデフォルト値(リストの書かれたシートのE2セルの値を利用している)も、こっちのB1とかA2とかに書いた方がいいのでは?
6
6
  - forループでは、「日付」の値から月・日の値を読み取り、今日の月・日と一致する場合のみメール送信の処理を行なう。そういえば、どこにも「生年月日」の値は使っていないが何のためにあるのかな?
7
- - メール送信処理では、名前、メールアドレス、(個別の)件名をリストから読み取り、メール本文を(名前を置換する処理なども含めて)生成してから、メールを送信している。元のコードでは名前をシートから読み取っていたが、リスト全体を読み込んだ`value`に名前も含まれるので、そちらを使うほうが高速だ。
7
+ - メール送信処理では、名前、メールアドレス、(個別の)件名をリストから読み取り、メール本文を(名前を置換する処理なども含めて)生成してから、メールを送信している。元のコードでは名前をシートから読み取っていたが、リスト全体を読み込んだ`values`に名前も含まれるので、そちらを使うほうが高速だ。
8
8
 
9
9
  ```GAS
10
10
  function myFunction() {

2

誤字を修正

2020/09/10 07:14

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  - 以下のコードでは、名前・誕生日・メールアドレスなどのリストが書かれたシートを(便宜的に)「シート1」としている。もっとふさわしいシート名を付けているなら、`getSheetByName`の引数を変更すること。このシートのオブジェクトを`sheet1`として取得し、リスト全体を`values`に読み込んでいる。
5
5
  - 「本文」シートのオブジェクトは`sheet2`として取得し、A1セルに書かれた本文を`text`に読み込んでいる。そういえば、件名のデフォルト値(リストの書かれたシートのE2セルの値を利用している)も、こっちのB1とかA2とかに書いた方がいいのでは?
6
6
  - forループでは、「日付」の値から月・日の値を読み取り、今日の月・日と一致する場合のみメール送信の処理を行なう。そういえば、どこにも「生年月日」の値は使っていないが何のためにあるのかな?
7
- - メール送信処理では、名前、メールアドレス、(個別の)件名をリストから読み取り、メール本文を(名前を置換する処理なども含めて)生成してから、メールを送信している。元のコードでは名前をシートから読み取っていた、リスト全体を読み込んだ`value`に含まれるので、そちらを使うほうが高速だ。
7
+ - メール送信処理では、名前、メールアドレス、(個別の)件名をリストから読み取り、メール本文を(名前を置換する処理なども含めて)生成してから、メールを送信している。元のコードでは名前をシートから読み取っていた、リスト全体を読み込んだ`value`に名前も含まれるので、そちらを使うほうが高速だ。
8
8
 
9
9
  ```GAS
10
10
  function myFunction() {

1

表現を修正

2020/09/10 06:30

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  - スプレッドシートIDを指定して得られるのは、シートではなく(シートの集合としての)スプレッドシートのオブジェクト。ここから直接`getRange`すると、**最初のシートが対象**となる。しかし、スプレッドシートに対する`getRange`は**引数のバリエーションが少ない**ので、質問のコードのような(行番号, 列番号)の指定はできない。
3
3
  - また、提示されたリンク先のページでは、本文は同じシートに書かれているが、質問では別のシート「本文」のA1を参照するので、このスプレッドシートは2つのシートを持つはず。こういうときは、**シートごとのオブジェクトを取得して操作**したほうがいい。`getRange`のバリエーションも豊富だ。
4
4
  - 以下のコードでは、名前・誕生日・メールアドレスなどのリストが書かれたシートを(便宜的に)「シート1」としている。もっとふさわしいシート名を付けているなら、`getSheetByName`の引数を変更すること。このシートのオブジェクトを`sheet1`として取得し、リスト全体を`values`に読み込んでいる。
5
- - 「本文」シートのオブジェクトは`sheet2`として取得し、本文を`text`に読み込んでいる。件名のデフォルト値(リストのE2セルの値を利用している)も、こっちのB1とかA2とかに書いた方がいいのでは?
5
+ - 「本文」シートのオブジェクトは`sheet2`として取得し、A1セルに書かれた本文を`text`に読み込んでいる。そういえば、件名のデフォルト値(リストの書かれたシートのE2セルの値を利用している)も、こっちのB1とかA2とかに書いた方がいいのでは?
6
6
  - forループでは、「日付」の値から月・日の値を読み取り、今日の月・日と一致する場合のみメール送信の処理を行なう。そういえば、どこにも「生年月日」の値は使っていないが何のためにあるのかな?
7
7
  - メール送信処理では、名前、メールアドレス、(個別の)件名をリストから読み取り、メール本文を(名前を置換する処理なども含めて)生成してから、メールを送信している。元のコードでは名前をシートから読み取っていたら、リスト全体を読み込んだ`value`に含まれるので、そちらを使うほうが高速だ。
8
8