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で質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript 初心者です。gulpでコンパイルができないので教えてください! 1 2023/05/17 17:07
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript GASでGoogleフォームの自動返信システムを作成しようとしたけれど保存ができません。 2 2023/12/26 18:19
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript HTMLとJavaScriptで作った表示して検索するWebアプリが正常に動かない 3 2024/01/05 17:48
- JavaScript HTMLで作った時報アプリが動きません 1 2024/01/21 09:49
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
PythonやJavaScriptのように実質的に数の桁数を無限に扱える言語と、全く無限に使えない言
JavaScript
-
プログラミング言語の制作方法について
C言語・C++・C#
-
変数名をどのようにつけるのが良いかアドバイスお願い致します
JavaScript
-
-
4
[初心者]javascriptのfor文でなぜか繰り返し処理をしない。理由がわかりません。
JavaScript
-
5
ボタンが押されたらWebページの文字コードを 変える、というプログラミングを書きたいです。 目的は文
HTML・CSS
-
6
PythonのTkinter詳しい方へ。画像や言葉の意味を答える3択クイズを作るのに手間取っています
その他(プログラミング・Web制作)
-
7
これなにがちがうんですか??
C言語・C++・C#
-
8
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
9
二次元配列の中の各行の要素をランダムに並べ替えたいです。
JavaScript
-
10
IT業界より楽に稼げる業界ってあるんですか?銀行とか?
その他(プログラミング・Web制作)
-
11
Javascriptエラーの原因が分からない
JavaScript
-
12
昔のパソコン少年の武勇伝「店先のパソコンでゲームを作成し、それを売り、その金でパソコンを買う」本当?
その他(プログラミング・Web制作)
-
13
double型が正常に認識されていない恐れ
C言語・C++・C#
-
14
Javascript で共通の処理をどこまでまとめるべきか分からないのでアドバイスお願い致します
JavaScript
-
15
XMLとは何ですか?
XML
-
16
二次元配列を使って順位をだすときに、同点の場合の順位をだす方法を教えて下さい。
JavaScript
-
17
なんでブラウザでPHPを動かすためだけにOSにPython2(Python3)を入れて、C(GCC)
PHP
-
18
プログラミングを教えたいです。そういうSNSないですか?
その他(プログラミング・Web制作)
-
19
【JavaScript?HTML?】Webページでこのページは戻ることは出来ませんと表
JavaScript
-
20
どなたかこのプログラミングを完成させて欲しいです。 ヒントはこちらです↓ 青色:ゲームプログラムのル
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで文字列の特定文字...
-
翌月を取得するGASが分かりません
-
C#OpenCv V4にのエラーに関する...
-
var exports = exports || {}; ...
-
GAS アンケート回答後の自動返...
-
アルファベットABCD…をスマート...
-
setTimeoutによる繰り返しが途...
-
google apps scriptの終了のさせ方
-
google map apiで下記のhtmlが...
-
googleスプレッドシートのApps ...
-
今日からnヶ月後(前)
-
ボタンを押すことでテキストエ...
-
引数なしの関数で疑問です
-
javascriptで複数キーワード検...
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascript修正依頼
-
第3日曜日のみの日付を取得、...
-
Javascriptで指定した位置の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報