
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ランキング
-
Outlookのアカウントがあるとメ...
-
jsonテキストデータの並び替え...
-
jsで、配列内の文章を改行する...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
-
HTMLでサブフレームから親のス...
-
ジャバスクリプトについて。
-
プログラムについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
C#で、ContextMenuStripに動的...
-
食材の期限を管理するためにGAS...
-
javaScriptのコードの修正をお...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
var exports = exports || {}; ...
-
google apps scriptの終了のさせ方
-
JavaScriptでテーブル内?に矢...
-
ジェネレーターの作り方
-
HTMLで作った時報アプリが動き...
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
setTimeoutによる繰り返しが途...
-
イラレでナンバリングする方法
-
定積分の近似値を計算する関数c...
-
pdfに丸秘などのスタンプを...
-
【JavaScript】数当てゲームを...
-
シンプルなweb版スタンプラリー...
-
翌月を取得するGASが分かりません
おすすめ情報