
Google Apps Scriptの勉強をしている者です。やっと何とかわかってきたところというレベルです。
どうしてもわからないことがあって、教えてもらったものの中で以下のような記述がfunction main()の前(上?)にありました。読み解こうと調べてみたのですが、まったくわかりません。今までかなりGASをネット検索してきましたが、このような記述は見た記憶もありません。
わかる方は教えていただけますでしょうか。もしくはこのサイトを見たら、説明があるというのでもかまいません。
ちなみにfunction main()はスプレッドシートからGmailを送信するという内容です。
// Compiled using ts2gas 3.4.4 (TypeScript 3.5.3)
var exports = exports || {};
var module = module || { exports: exports };
"use strict";
No.7ベストアンサー
- 回答日時:
以下のサイトが見つかりました。
https://www.nowhere.co.jp/blog/archives/20211126 …
.gsファイルがたくさん増えたときに、どこの関数か迷子にならないために、moduleとexportsというものを使うテクニックがあるようです。
とりあえず、いまお使いのスクリプトの中の、質問文に引用されているところ以外で、moduleや、module.exportsが使われているかどうか、確認してみてください。
使われていれば、ほかの.gsファイルとの関係が分かりやすくなっているのではないかと思います。
使われていなければ、ts2gasによって、自動出力されているだけなので、そのスクリプトを詳細に調べても、何の意味があるのか、どんなメリットがあるのか、分からないと思います。
忙しい中、回答ありがとうございます。
>.gsファイルがたくさん増えたときに、どこの関数か迷子にならないために、moduleとexportsというものを使うテクニックがあるようです。
そういうことだったのですね。
教えていただいたサイトを見たり、他のサイトを見たところ、どうもTypescriptというJavascriptと互換性のあるようなプログラム言語を使っているみたいですね。
よくわからなかったのですが、以下のサイトではTypescript からGASのコードを書いているようです。誤解していたらすみません。
https://tech.actindi.net/2018/09/10/083314
まだGASを勉強中の私にはレベルが高すぎるようですので、いったんGASの勉強に集中したいと思います。
いろいろ教えていただきありがとうございました。
No.6
- 回答日時:
>なんの定型的なパターンなんでしょう?
広く言えばJavaScriptにおける初期化の定型的なパターンです。
例えば外部リソースを取得する時や環境によって参照先が無いケース(例えばサーバーダウンで外部リソースを引っ張れないとか)の際にunderfineで処理が実行できなくなると困るので確実に初期化できる方を参照不可の時にだけ使います。
元から確実にある方を使わないのはバージョンの更新の恩恵を受けたいとか、様々な理由からなります。
exportsは変数名です。日本語で言えば読み込んだリソースの事です。「読み込み」に失敗した際は{}というオブジェクトを入れたいという意図に思えます。
定型的なパターンではコメントが書かれないので難しいですよね。
解決しましたら幸いです。
目的を見失わないように頑張ってください。
再度の回答ありがとうございます。
>exportsは変数名です。日本語で言えば読み込んだリソースの事です。
「読み込んだリソース」というのがわかりません。以下のようにfunction main()の外に記述されているんですが。
// Compiled using ts2gas 3.4.4 (TypeScript 3.5.3)
var exports = exports || {};
var module = module || { exports: exports };
"use strict";
function main() {
}
私の知識不足もあり、回答がよく理解できない状況です。もし可能でしたら、解説してあるようなサイトの紹介でもしていいただけないでしょうか。
No.4
- 回答日時:
定型的なパターンです。
左の値が初期化されていなかったら右の値で確実に初期化するために使います。
ちなみに演算子の意味から考えることも出来ますが。
忙しい中、回答ありがとうございます。
>定型的なパターンです。
何の定型的なパターンなんでしょうか?GASの解説サイトでも見たことのない記述なんですが。質問ばかりですみません。m(__)m
No.3
- 回答日時:
こんばんは
すでにNo2様が回答している通りですが・・・
演算子 || は論理和を求める演算子です。(一般的にはOR演算子)
論理値に対して用いた場合は true/false を返しますが、倫理値以外に用いた場合は、true評価になる値そのものを返します。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
実際の使用例と、説明はこちらがわかりやすいかもしれません。
https://zenn.dev/fujii0112/articles/78fe69c4c30731
忙しい中、回答ありがとうございます。
演算子の||はわかりますが、exportsの意味がわかりません。そもそもexportsとは何を受けているんでしょうか?
No.2
- 回答日時:
それはJavaScriptなどでよく見る記法ですね。
var exports = exports || {};の場合、
先ずexports || {} と言う式はexportsを評価し、exportsがtrueだったら、exportsの値を、falseだったら{}の値を返すと言うものです。
つまり、先程のvar exports = exports || {};はexportsがtrueだったらexportsをfalseだったら{}をexportsに代入すると言うものです。
忙しい中、回答ありがとうございます。
||はorの意味だというのはわかります。意味がよくわからないのですが。exportsがいきなり出てきて何をうけているのかがよくわからないのです。
No.1
- 回答日時:
私はそういうのを組んだことありませんので、誤った回答と思われたら、遠慮無く無視してください。
コーディングを見ると「;」は{続きがある}という記号に思えます。
つまり、
var exports = exports || {};
var module = module || { exports: exports };
"use strict";
は、
var exports = exports || {} var module = module || { exports: exports } "use strict";
であり、言葉にすると・・
var exports = exports || {} @続きあり
var module = module || { exports: exports } @続きあり
"use strict" @続きあり
という事になると思います。
コーディングを見やすくするためのルールだと思います。
忙しい中、回答ありがとうございます。
exports = exportsの意味がわからないんです。exportsにexportsを代入する?そもそもexportsとは何を受けているんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NETのコントロールの値をJa...
-
jQueryのload()を使用して外部...
-
商品コードを入力で、商品名、...
-
var_dumpのdump意味はを知りた...
-
ASP.NET MVCでObjectをjsに渡す
-
ローカルにあるファイルを検索...
-
JavaScriptで決まった「時刻」...
-
翌月を取得するGASが分かりません
-
javaScript textareaの一行あた...
-
C#OpenCv V4にのエラーに関する...
-
JavaScriptでfor文
-
JavaScriptで、現在日時から100...
-
gasについて
-
ページ内に複数表がある場合のT...
-
同じIDで定義した要素の配列を...
-
【正規表現】【javascript】CR...
-
RadioButtonListの表示制御
-
複数のxmlを同ページに読み込み...
-
ジャバスクリプトで空白(スペー...
-
クリックすると上に開くアコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#で、ContextMenuStripに動的...
-
C#OpenCv V4にのエラーに関する...
-
javascriptでiframeのURL変更は?
-
ASP.NET MVCでObjectをjsに渡す
-
ASP.NETのコントロールの値をJa...
-
ローカルにあるファイルを検索...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
船のゲームを作っているのです...
-
商品コードを入力で、商品名、...
-
スクリプトのフルパス取得したい
-
HTMLにWSHを組み込む
-
Javascript 特定のフォルダのデ...
-
XMLの空白要素をJavas...
-
google feed api
-
html javascript リンク先アド...
-
JavaScriptで平日のみをカウン...
-
$("body").height();と$("body"...
-
シンプルなweb版スタンプラリー...
おすすめ情報