• 締切済み

Google Apps Scriptについて

Google Apps Scriptを習得したいと思います。2冊ほど本を買ったり、ネットを参考に勉強しています。何とかものにしたいと思っていますが、基本Java Scriptと同じだと言う事を聞いたのですが、『3ステップでしっかり学ぶ JavaScript入門』とかをきっちりとやれば、それなりに理解は進むのでしょうか?それとも、両者は似て否なるものであって、役に立たないのでしょうか? 基本をしっかり身につけて、応用力を付け実践力を付けたいと思っています。よろしくお願いします。

みんなの回答

noname#247307
noname#247307
回答No.1

文法的にはJavaScriptとほぼ同じと考えて間違いないです。基本的に「サーバーサイドJavaScript」の一種と考えていいです。ですから文法としては同じですが、オブジェクトなどの利用については、ブラウザなどでの利用を前提にしたJavaScriptの入門書は使えません。 例えばwindowやdocumentといったブラウザのオブジェクトはすべて利用できません。そのかわりに、GASに実装されているオブジェクト類が多数用意されています。また、例えばDateなどのようにブラウザとは関係ない実装部分はそのまま使うことができます。 ですから、感覚的には「JavaScriptの文法に独自のオブジェクトを追加したもの」と考えるのがいいでしょう。JavaScriptの入門書は、文法に関する部分は役に立つでしょうし、実際、しっかりと理解しておかないといけません。が、オブジェクト類については、JavaScriptの入門書はほとんど役には立ちません。このへんはGASの解説を探して学ぶ必要があります。

aki567
質問者

お礼

さっそくありがとうございました。 非常に参考になりました。方向性も判ってきました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Google Apps ScriptとVBA

    Google Apps Scriptでスプレッドシートの操作をしたいと考えました。VBAだと、クラウド環境で動作しないためです。しかし、Google Apps Scriptの情報はほとんどありません。ある程度プログラミングの知識があれば応用が利いてなじめるのかもしれませんが、基本的に知識もそこまでなく、行き詰まっています。VBAだと、少しは経験があるので何とかできると思うのですが。 Google Apps ScriptとVBAとは違うものだとは理解していますが、VBAで組んで置いてから、その考え方をGoogle Apps Scriptに反映させると言う考え方と言うのは間違っていますか?まったく異なる言語だと言うことは認識していますが、VBAの動きをGoogle Apps Scriptのものに置き換えると言う意味です。(うまく表現できませんが) ただエクセルがどの環境にもあれば、VBAでも良いと思いますが、エクセルがない状況を想定すると Google Apps Scriptと言う選択肢になるのですが。どうも、日本のフォーラムは閉鎖され、アメリカのフォーラムに誘導され、そこからまた外部のサイトに誘導されてしまい、手詰まりになってしまいました。ドキュメントも何とか読もうとしていますが、基礎がないので苦労しています。

  • Google Apps Script の構文エラー

    Google Apps Scriptの勉強をしようと思い立ち入門書のサンプルコードを見ながら構文を入力しているのですが、 下記の構文を保存しようとすると、“ステートメントの前に ; がありません。(行 2、ファイル「コード」)”というエラー表示が出てしまいます。 サンプルとは一字一句間違いないのですが何が悪いのでしょうか? どなたかお教えいただけないでしょうか。当方javaの知識はほとんど有りません。 function 条件分岐3() { ver myTime = new Date().getHours(); if (myTime < 12) Browser.msgBox("おはよう"); } こちらになります。よろしくお願いいたします。

  • Google Apps Scriptで自動印刷

    GASでDocumentファイルをPDFに変換保存し(ここまではスクリプトを組み、問題なく動作している)、最後に同PDFを印刷するコードを組もうと色々試したのですが、どうも印刷メソッドが見当たりません。 コンテンツアシストからそれっぽいものを片っ端から探し、書籍「Google Apps Script クイックリファレンス」の関係なさそうなとこまで探し、JavaScriptのprint()を試し、もちろんWebで検索をかけ、英文のサイトも探し、結局辿り着いたのは「印刷メソッドはない」という情報でした(英文フォーラム投稿)。 不存在の確証というのは得づらく、Googleがアップデートしてメソッドを追加してやしないか、そもそもあの情報を書いた人が知らなかっただけではないか、と諦め切れません。 また、もし印刷のGAS内での処理が無理ならばそこだけ外部アプリケーションに頼ることもやぶさかではないので(ただし、スクリプト組みはGAS内に留めたい)、とりあえずデスクトップへのダウンロードまでスクリプトで組もうとしたところ、downloadAsFile()というメソッドがTextファイルでしか働かず(TextOutput.downloadAsFileでしか呼び出せない)、元々のDocumentが書式設定されたもののためにPDFどころか元のDocumentのダウンロードにすら使えない状態です。 そこで、以下をご存知でしたら教えて頂きたい。 ・Google Drive上のPDFまたはDocumentをWebブラウザ上から直接印刷するためのGASのコード ・.txt形式以外でファイルをダウンロードするコード ・その他、生成したファイルを一括して印刷またはダウンロードするのに便利な方法 (Driveのリストからチェックを複数入れてプレビュー→印刷は一つしか印刷対象にならずダメ。チェックからダウンロードはZip化されて少々鬱陶しい。) 以上よろしくお願いします。

  • ブログ上で複数のjavaスクリプトから2つのjavaスクリプトをランダムに表示させたい

    ブログ上に、複数のjavaスクリプトからランダムに2つのjavaスクリプトを選んで表示させたいのですが、コードがわからないので教えていただきたいです。選ばれた二つは被らないようにしたいです。 使用したいjavaスクリプトのコードは <script type="text/javascript" charset="euc-jp" src="○○1"></script> <script type="text/javascript" charset="euc-jp" src="○○2"></script> <script type="text/javascript" charset="euc-jp" src="○○3"></script> のようになっています。 javaを使って画像や文字をランダムに表示する方法はあったので応用しようとしたのですがうまくいきませんでした。 よろしくお願いします。

  • Googleがホストしているライブラリを調べる方法

    jQueryなどのライブラリを自サイトで使用する際、そのソースを自サイトに配置した上で以下のように指定して読み込む事が基本だと思います。 <script type="text/javascript" src="/js/jquery.js"></script> 最近、Googleなどが提供しているライブラリを借りてくれば、自サイトに配置せずに済むという事を覚えたのでそれを使って、以下のように書いています。 <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("jquery", "1.7");</script> このように書けば良い、と解説されている記事を読んだからですが、他にもよくjQuery.UIなどを使う場合の記述も書かれています。 このように、解説しているものを見つけた場合は、これもホストされているのだなと使えるようになりますが、自分でGoogle内でどのライブラリが提供されているのかを調べる方法は検索したのですが見つけられませんでした。 ここに書かれている、こうすれば調べられるという方法があれば、教えていただけませんでしょうか。 よろしくお願いします。

  • Google apps scriptについて

    Googleドライブのスプレッドシートで作成したスケジュールをGoogleカレンダーに反映するGoogle apps scriptを作成したいと思っています。 下記のサイトが、ほぼイメージに近いのですが、コチラのコードでは、時間の指定ができません。 ○時から○時までという時間の指定をするには、どのようにコードを追加すればよろしいですか? http://pc.nikkeibp.co.jp/article/column/20140210/1120685/?P=6 以上よろしくお願いします。

  • Google Apps Scriptについて

    Google Apps Scriptについては全くの初心者です。どなたか知恵をお借りしたいです。 accessを使い業務システムを作っているのですが、これまでgoocalproxyというサービスを使い、新規受注を入力すれば、その内容をgmailに飛ばし、自動でグーグルカレンダーに登録させてました。このgoocalproxyが数日前から機能しなくなり、色々調べた結果Google Apps Scriptを使って登録する方法を見つけたのですが、全くの初心者の為、ネットで参考にしたサンプルのコピペしかできず、下記のようなコードを使用しております。 function setCalLab(){ //var dstr = "本日の予定"; //var label = GmailApp.createLabel(dstr); var thds = GmailApp.getInboxThreads(); var calName = "本日の予定"; var cals = CalendarApp.getCalendarsByName(calName); for(var n in thds){ var thd = thds[n]; var subject = thd.getFirstMessageSubject(); var msgs = thd.getMessages(); if (subject.indexOf("本日の予定",0) != -1){ //label.addToThread(thd); //for(var m in msgs){ var msg = msgs[0]; var body = msg.getPlainBody(); var str = msg.getSubject(); var res = str.match(/\d+/g); var cal = cals[0]; var d1 = new Date(); var yy = d1.getFullYear(); var dd = new Date(yy,res[0]-1,res[1]); cal.createAllDayEvent(str,dd,{description:body}); //} GmailApp.moveThreadToArchive(thd); } } } これですと、カレンダーに自動登録は出来るのですが、終日の予定になってしまいます。 やりたい事は、gmail宛てに予定の件名、日付、開始時間、終了時間を送りそれを自動でグーグルカレンダーに開始時間から終了時間までの予定で反映させたいと思っています。 別のサイトで、 function createEvent(){ var calendar = CalendarApp.getCalendarById('xxxxxxxxxx@group.calendar.google.com'); calendar.createEvent('歯医者', new Date('2012/3/12 18:00:00'), new Date('2012/3/12 20:00:00')); } 時間指定のほかに、予定の概要、場所情報を設定することもできる。 function createEvent2(){ var calendar = CalendarApp.getCalendarById('xxxxxxxxxx@group.calendar.google.com'); calendar.createEvent('歯医者', new Date('2012/3/12 18:00:00'), new Date('2012/3/12 20:00:00'), {description: '概要', location: '◯◯病院'} ); } というような情報も見つけたのですが、幾分全くの初心者の為、これをどうすれば思い通りのコードになるのかわかりません。 どなたかご教授お願い致します。

  • 「Google Apps Script」について

    Googleスプレッドシートの「Google Apps Script」についての質問です。 イベントなんですが、「セルが選択された」とか「セルにフォーカスがあたった」とかいうイベントはあるんですか。 ないとすれば何かやりようはありますか。カーソルの移動したセルを赤くしたいんです・・・・。

  • google apps scriptについて

    google apps scriptに関しては全くの初心者ですので、どなたかお力をお貸しください。 現在、Accessでシステムを作っているのですが、システムに新規案件が登録されると自動でグーグルカレンダーにも登録されるようにしています。 具体的には、システムに新規案件が登録されたタイミングで件名を「★マーク+タイトル+日付+時間」、内容に案件詳細を入れたメールをgmailに送り、google apps scriptのトリガーで一定間隔でメールを検索し、件名に★マールの入ったメールがあれば件名に入っている日付・時間でカレンダーに内容を登録するようになっています。 そこで質問なのですが、今度はシステムより同じ内容のメールを送り、そのメール内容と同じものがカレンダーで見つかるとその予定を削除するようなgoogle apps scriptを作りたいのです。 メールのサンプルとgoogle apps scriptのコードは下記のようになっています。 全くの初心者でコードもネットを色々調べて書いたのであまり内容も理解できていません。 どなたか宜しくお願い致します。 メールサンプル 件名: ★取引先と打合せ 2015/08/02_16:00-18:00 内容: 管理NO 9016 2015/08/02 16:00-18:00 発注担当者:様 場所:事務所 登録日:2015/06/19/11:51 コード function setCalLab(){ var thds = GmailApp.getInboxThreads(); var calName = "メールアドレス@gmail.com"; var cals = CalendarApp.getCalendarsByName(calName); for(var n in thds){ var thd = thds[n]; var subject = thd.getFirstMessageSubject(); var msgs = thd.getMessages(); if (subject.indexOf("★",0) != -1){ //label.addToThread(thd); //for(var m in msgs){ var msg = msgs[0]; var body = msg.getPlainBody(); var str = msg.getSubject(); var res = str.match(/\d+/g); var cal = cals[0]; var d1 = new Date(); var yy = d1.getFullYear(); cal.createEvent(str,new Date(res[0],res[1]-1,res[2],res[3],res[4]),new Date(res[0],res[1]-1,res[2],res[5],res[6]),{description:body,sendInvites:false}); //} GmailApp.moveThreadToArchive(thd); } } }

  • Google マップにマーカーと同心円を入れたい

    2回目の質問です。前回の掲載期間で、解決できなかったため。 超初心者的質問ですが、教えてください。 Google マップのある地点を中心に、 マーカーと1km/5km/10kmなどの同心円(半透明で外側ライン)の2種を表示をしようとしています。 おのおの単独で表示することは、例がありわかりましたが、 その2つを同時に表示するために、scriptを変更するのがわかりません。 1. マーカーを表示するscript <script src="http://maps.google.com/maps?file=api&v=2&key=[あなたのAPIキー]" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ function load() { if (GBrowserIsCompatible()) { //地図を作成 var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng( 緯度 , 経度 ), 地図サイズ ); //マーカーを追加(国会議事堂) var marker = new GMarker(new GLatLng( 緯度 , 経度 )); map.addOverlay(marker); } } //]]> </script> 2. 同心円を表示するscript <script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script> <div id='map' style='width:700px; height:400px;'><br /></div> <script type="text/javascript"> var myLatLng = new google.maps.LatLng( 緯度 , 経度 ); var myMap = new google.maps.Map(document.getElementById('map'), { zoom: 地図サイズ, center: myLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP, scaleControl: true, scrollwheel: false }); new google.maps.Circle({ center: myLatLng, // 中心点(google.maps.LatLng) fillColor: '#ff0000', // 塗りつぶし色 fillOpacity: 0.5, // 塗りつぶし透過度(0: 透明 ⇔ 1:不透明) map: myMap, // 表示させる地図(google.maps.Map) radius: 95330, // 半径(m) strokeColor: '#ff0000', // 外周色 strokeOpacity: 1, // 外周透過度(0: 透明 ⇔ 1:不透明) strokeWeight: 1 // 外周太さ(ピクセル) }); </script> この2ヶのscriptをどのようにつなげば、解決できるか教えてください。 JavaScriptの基本知識不足のため、書いていただければ助かります。