グーグルのスクリプトはApps Scriptという名前で、JavaScriptに似た仕様になっています。
利用にはGoogleのアカウントを作成する必要が有るのですが、無料でアカウントさえ作れば、グーグルサービス同士の連携が出来るので、とても便利です。
例えば、グーグルフォームでアンケートを収集して、アンケート受付をGmailで送信するとかが可能になります。
今回はみんなのサマーセミナーで当日シフトを作成するにあたり、
グーグルフォームでシフト可能日を選択してもらい
グーグルスプレッドシートへシフトを割り当てる
というスクリプトを作成しました。
嵌まりポイントが有りましたのであメログ。
例えば配列を繰り返し処理する場合、以下の様なスクリプトを組んだとします。
function myFunction() {とした時、意図した結果になりません…。
var abc = [ 'a', 'b', 'c'];
for( var i in abc) {
if( i + 1 == 2) { //ここね
console.log( abc[ i]);
}
}
}
デバッグで追跡したみたところ、iにはStringが入っている事が判明しました。
良く解らないのですが、インクリメントして文字列に変換してくれてるんかな?
仕方ないので
function myFunction() {として数値に変換して回避しました…。
var abc = [ 'a', 'b', 'c'];
for( var i in abc) {
if( parseInt( i) + 1 == 2) {
console.log( abc[ i]);
}
}
}
どうもGASのfor in文では反復子(i)を文字列で扱っている様です…。
反復子の操作はバグの元という意見も有るので、わざと扱い難くしてはるんかな?
一層の事この場合は
function myFunction() {にした方が良ぇんかな?
var abc = [ 'a', 'b', 'c'];
for( var i = 0; i < abc.length; i++) {
if( i + 1 == 2) {
console.log( abc[ i]);
}
}
}
0 件のコメント:
コメントを投稿
つっこみ