【MACRO】Google Apps Script 質問スレ【DRIVE】
Google Apps Script でのプログラミング等に関する質問スレです Excel や Access の VBA に不満のあるあなた web アプリだけでなくクライアントアプリからも利用したいあなた ローカルなデータベースやファイルだとバックアップに不安のあるあなた ム板に無かったので立ててみます Google Apps Script ttps://developers.google.com/apps-script/ Google Drive API ttps://developers.google.com/drive/ Getting Started with the Google Data Python Library ttps://developers.google.com/gdata/articles/python_client_lib ■関連スレ Google Maps API 質問箱 http://peace.2ch.net/test/read.cgi/tech/1131627583/ Microsoft SkyDrive API http://peace.2ch.net/test/read.cgi/tech/1385604796/ 【GoogleAppsScript】猿92【研究せよ!!!】 http://nozomi.2ch.net/test/read.cgi/php/1398600864/ GoogleAPIってどうよ? http://nozomi.2ch.net/test/read.cgi/php/1018614427/ Google App Engine for Python 6アプ目 http://nozomi.2ch.net/test/read.cgi/php/1358570953/ Google App Engine for java http://peace.2ch.net/test/read.cgi/tech/1317639323/ GoogleWebToolkit[GWT]について語ろう http://nozomi.2ch.net/test/read.cgi/php/1147975874/ セルが保護されてるか確認するコマンド?がわからないんです それのtrueかfalseでなんとかなりそうなんですが >>548 しかも、自動で送ってんだよね。 通信の保護はSSLでやってんだから、ファイルのご送信保護にはなってないね。 まるで意味がない >>468 ない。 あるように思えるGraph APIはあくまでもREST APIだから、別途土台になる環境が必要 >>506 じゃ、Apps Script APIでも使えばいいじゃん HtmlServiceでもalertでもいいのですが、spreadシートを開いている状態で、1時間おきにダイアログを表示させたいのですが時間主導型でトリガーをセットしても、このコンテキストからは呼び出せないとエラーが出ます。 何かいい回避策はないでしょうか? スプレッドシートでマクロ起動させるために図形描画して スクリプトを割り当てたらもう図形の編集や図形の削除ってできないんですか? 割り当て後は右上のプルダウンメニューがでてこないんです グーグルアップスクリプトはプログラミング初心者におすすめできる Googleカレンダーに添付ファイルを追加するコード教えて! これとコマンドラインgdriveでいろいろできそう 内定先がGsuiteなんだけどどう勉強したらいいのかな? こりゃ問題じゃね 【悲報】Googleマップ、ゼンリンとの契約解除で超絶劣化 ゼンリンも株価暴落 何がしたいんだ両社 https://hayabusa9.5ch.net/test/read.cgi/news/1553226352/ Googleカレンダーに添付ファイルを追加するのは諦めて、HYPERLINKで解決した。 GASではできないんじゃ? Calendar APIならできるかもよ 調べてないけど GASを使ってnow関数の更新をとめる方法ってないでしょうか? 検索してもまったく出てこないんです API使わなくてもlinkメソッドで出来るけどね。ここは知ったかぶりする回答者しかいなから使えない。 書き方がわからないんですけど、 VBから翻訳する方法ないですか? >>590 あのー、方法を知らない人に聞いてないんですけどー。 >>592 だからやり方のわからない人には聞いてないんですよ。 ちなみに書き方はわかったのでもういいです。 googleフォーム 名前 趣味 好きな理由 趣味 好きな理由 で得たデータ 名前 趣味 好きな理由 趣味 好きな理由 (名前の入力内容) (趣味の入力内容) (好きな理由の入力内容) (趣味の入力内容) (好きな理由の入力内容) を (名前の入力内容) (趣味の入力内容) (好きな理由の入力内容) (趣味の入力内容) (好きな理由の入力内容) と並べ替えたいのですが、どのようにすれば可能でしょうか? ご存知の方ご教示お願い致します フォームと連携されたシートをアレコレ弄るのはあんまりオススメしない 別シートにその形になるようにスクリプト組めば? 前職を退職してしばらく経過している、VBAとPHPしかできないウンコちゃんなんですけど、 これから勉強するならVBAとGASどっちがおすすめですか? 中小企業でのGSuiteの普及具合ってどう? 知らんがな まぁjavascriptと同じ感じだからGAS覚えとけば 使う機会あるか知らんが もしかして、スプレッドシートって、テキストボックス配置出来ない? ボタンを押したときに、テキストボックスに入れた値を引数にしてGAS実行とか無理? あ、ごめん、Excelレベルのやつ。 下手に触ると、変形したり消えちゃったりする、 図形のじゃなくて。 セルだと、「ここに値を入れるんだぞ」って感じじゃないので。 なんて言うか、例えば格子状に線が引かれている方眼紙みたいな年賀はがきがあって、 そこに住所とか氏名書いたら、物凄く萎えると思うの。 まずSpreadSheetにその機能があるのか? テキストボックス付きのExcel表を変換したらどうなる? >>608 何か変な画像(?)みたいなのに置き換えられた。 HTML ServiceとUI使えばダイアログボックスやサイドバーに htmlを使ってテキストボックスやボタンとか表示させることができるよ getidとgeteventbyidって何が違うの? どんだけ惨めな負け組人生を送ったら、そんなことが書けるんだろう・・。 >>611 getIdのドットの前のオブジェクトは何? それ次第 getEventIdはカレンダーイベントオブジェクトでしょ? だからカレンダーイベントのidが取得できる >>611 getEventByIdだったw イベントidでイベントを取得するメソッドだね >>617 カレンダーイベント配列のgetId。 だから、何でカレンダーイベントのIdを取得できるのがもう一つあるのかなと。 しかも取得結果が違うし。 getIdは、長い暗号 + メールアドレスみたいな文字列が返ってくるけど、 getEventByIdは、全然違う文字が返って来たり、空だったりする。 sheet.getRange().sort(column); の様な処理で column 列が式の場合、式の文字列でソートされますが この関数は演算結果に対して行う手法はあるのでしょうか? 無いようなら getDisplayValues で配列に取り込み、 放り込みなおして sort するのが比較的手数が少ない方法ですかね? 検証不足で他の要因で一部にソート異常があったので思い込みにはまってました、お恥ずかしい スプレッドシートでExcelのマクロみたいなことをしたいのですが オススメの参考書などありますでしょうか? ググって調べるのが一番だと思うけど。 俺も欲しかったので、Amazonで調べたけど、 内容がすぐに陳腐化するらしい。 アップデートが頻繁なのも善し悪しだな。 Javascriptの基礎的な言語知識と GAS独自のオブジェクト たとえばスプレッドシートなら Spreadsheet, sheet, rangeなどが分かればある程度のものは 組めるようになると思う gmailの着信をトリガーにする方法はありますか? 今は1分間隔でスクリプトを動かしてるんだけど、 たまに経過時間でエラーがでちゃうので、1分間隔は厳しいのかなーとか。 質問なのですが、 1・スプレッドシートにボタンを作る(挿入→図形描画で作りました) 2・そのボタンにツール→スクリプトエディタで書いた、簡単なgasを紐つける これでPCのブラウザからはボタンをクリックすると、ちゃんとgasが何の問題もなく正常動作するんですが スマホのスプレッドシートアプリから同シートを開いてボタンをクリックするとgasが全く動きません エラーも出ず、ボタンオブジェクトがクリックされた状態(D&Dでオブジェクトを移動できる状態)になるだけです もしかして、gasはスマホのスプレッドシートアプリからは動作しなかったりしますか? なお、書いたgasは以下です function addTuujouKinmu() { var sheet=SpreadsheetApp.getActiveSheet(); var x=sheet.getRange("D14").getValue(); //現状の通常勤務日数を取得 sheet.getRange("D14").setValue(x+1); //ボタンがクリックされたら勤務日数+1 } よろしくお願い致します >>628 なぜかスマホのブラウザからでも編集、gasの動作しないです どうも閲覧専用アカウントのような、閲覧しかできない状態になっているように見えます ブラウザはios版GoogleChromeで、グーグルアカウントはこのシートとgasを書いたオーナーアカウントでログイン済みです PCブラウザで同アカウントでログインして、gasの正常動作とシート編集などできる事を確認しているアカウントです スプレッドシートのgasが、アプリはブラウザでもスプシアプリでも何でもいいので、 スマホで動作している方いらっしゃいませんでしょうか? >>626 625じゃないんだが、再起動ってどうやってするの Gmail時間予約送信のGmailApp実装はまだですか? トリガーも使ってます、定期送信用に。 ただ、不定期にspreadsheets上で複数宛先に一括送信する場合、毎回宛先も内容も違うので、念のため事前にgmail上でチェックしたいのです。 google driveやonedrive、amazon s3をFTPで利用できるアプリを開発しました。 よかったら使ってみてください。 webifi http://www.loxsols.com/pukiwiki/index.php?webifi Java Script知らない場合は先にJava Script勉強したほうがいいですか? でもES5の仕様がほとんど使えないから ちょい古めのJavaScriptで書くことになる ドキュメントにあるデータ名・URL・オーナー名・作成日・更新日を一覧化したいんだけど、指定したオーナーのデータのみ吐き出したい。 これってできる? スプレッドシートのonOpenで自分のホルダー名知りたいのですがdriveappの一部が仕様でエラーになります。何か裏技無いでしょうか? 自己解決、onOpenじゃなくて現在のプロジェクトのトリガーでスプレッドシートの起動時にvoldの関数を実行すると登録したら動きました。擬似的なフォルダ構造でやれそうです。 スプレッドシートの内容をカレンダーに自動追加するスクリプトを素人ながら作りましたが、 いわゆるAPIの呼び出し過多で実行時間が11-14秒かかります。 短縮するにはどのように書き直せばいいかご教示いただけないでしょうか。 function CreateEventfromSheet() { var sheet, i, event, date, added; sheet = SpreadsheetApp.getActiveSheet(); for(i = 2; i <= sheet.getLastRow(); i++) { added = sheet.getRange(i, 16).getValue(); if(added == "") { event = sheet.getRange(i, 11).getValue(); Logger.log(event) date = sheet.getRange(i, 12).getValue(); Logger.log(thedate) thisevent = CalendarApp.getCalendarById("*****") .createAllDayEvent( event, date ); sheet.getRange(i, 16).setValue("done"); } } } >>644 for文の前に、まるっとgetValue's' とか? >>645 あと、各行の結果も(二次元)配列に入れておいて最後に setValue's' かな インストール不要だからVBAより便利そうですね。 最近勉強を始めました。 >>644 結果を入力するとことか無駄あるけど、こんな感じかな ポイントはシートにセットする値は二次元配列にしないとだから、resultにpushするときに配列として渡してあげるとこ ただカレンダーの予定を入力するのは結局一つずつだから、大量に入れると遅くなるのは仕方ないかも A列 タイトル B列 日付 C列 イベント作成したかどうか function sample() { var sheet = SpreadsheetApp.getActiveSheet(); var calender = CalendarApp.getCalendarById('####'); var data = sheet.getDataRange().getValues(); // カレンダーへのセットの結果を格納する配列 var result = []; data.forEach(function(value){ if(value[2] === ''){ var title = value[0]; var date = new Date(value[1]); calender.createAllDayEvent(title, date); result.push(['done']); }else{ // すでにセットされている予定は更新しない result.push([value[2]]); }; }); sheet.getRange(1, 3, result.length, 1).setValues(result); } あけましておめでとうございます。 >>645 ,>>648 ありがとうございます。 結果的に下記内容で実行時間を1カレンダー入力を2秒未満に済ませることができました。 カレンダー追加済と日付の指定を探しに行く範囲を限定しただけですが... 前提となるシートの内容が、 上から順に案件番号(3列目,C列)と案件名(10列目)は振られるものの、 カレンダーへの反映は予定日(11列目)が決まり次第のため、 入力済かの判定列(15行目)は途中で空欄が含まれるものでした。 >>648 の内容をすることを正月休みの宿題にすることにします。 function CreateEventfromSheet2() { var sheet = SpreadsheetApp.getActiveSheet(); var lastRow = sheet.getLastRow() var columnC = sheet.getRange('C:C').getValues(); var lastRowC = columnC.filter(String).length;//案件番号の最終行 Logger.log(lastRowC) for(var i = 2; i <= lastRowC; i++) { var added = sheet.getRange(i, 15, lastRowC, 1).getValue();//カレンダー追加済か var thedate = sheet.getRange(i, 11, lastRowC, 1).getValue();//予定日が入力されているか if(added == "") { if(thedate !==""){ var event = sheet.getRange(i, 10).getValue(); Logger.log(event) thisevent = CalendarApp.getCalendarById("****") .createAllDayEvent( event, thedate ); sheet.getRange(i, 15).setValue("done");//追加済とする } } } } GASに、VBAのAdvancedFilter相当の機能はありますか? ORとANDの組み合わせが自由自在のやつ。 ↑出来れば、他の閲覧者の画面に影響しないタイプのフィルタで。 クエリ? 自シート内でフィルタではなく、他シート(または別範囲)に書き出す感じですか。 apps scriptでCSV読み込んでそれをgoogleドキュメントに差し込みしてそのあと印刷したいってできる? app script初回に他のアクセスするファイルの許可って途中からでも許可できるファイル増やせる? 豚切りスマソ ファイル名の同じpdfファイルを毎月同じ日にダウンロードして、Googleドライブに保存したいんだけど、そんなことできる? 例えばこれ https://www.mizuhobank.co.jp/market/pdf/mid/midcba.pdf GASで他人が作ったライブラリを追加したのですが、その内容を確認する方法はあるのでしょうか?あるのでしたらその方法を教えていただきたいと思います。 Twitterに投稿をするアプリの紹介している同人誌があり Authを設定してそのライブラリに渡すことで実現しています。 ただ、そのライブラリは作者が開発したのもですので、 抜き取られていないかどうかを確認したいと思っています。 今日初めてスプレッドシートでスクリプトを書き始めたド初心者です 変数にちゃんと値が入ってるか確認するためにLogger.log()でこまめにログを開くんですが、ログ表示にすごく時間がかかったり、スクリプトの中間辺りのLogger.log()だけ表示されていたりします 10〜20秒位待ってログを開き直すとちゃんと表示されるのですが、毎回待たされるのが地味にストレスです 素早く正しく表示させる方法はありますか? ちなみに変数に値を入れて、その中身を表示させるだけのシンプルなものでもそれなりに待たされます あとログウィンドウを移動させる際に、ウィンドウを持てる箇所の当たり判定が小さいのと、マウスカーソルが矢印から手に変わらないから、なかなか一発で動かせないのと、動かしたところでスクリプト画面にフォーカスしないからスクロール出来ないのも憎しみポイントですね >>664 新しいエンジンが供用開始になったばかりなのでまだ buggy かも ログ表示は旧エンジンを使えばすぐ表示される あんまり回答になってないが >>663 その作者が公開設定してなきゃ確認する手段はない 有名どころのライブラリは公開してるのがほとんどだから、あやしいマイナーライブラリ使うより有名なTwitterライブラリ使ったら? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる