【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/ >>562
こちらの処方箋を薬局にお持ちください。
次の方〜 スプレッドシートのセルの条件で書式を変えるやつなんですけど
セルの保護を付けたり解除したりで背景色を変えることってできますか? >>564
それをgasでやるんだよ
条件書式じゃできない セルの保護ってスクリプトでできたっけ?
調べてもできなかった記憶 セルが保護されてるか確認するコマンド?がわからないんです
それの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初回に他のアクセスするファイルの許可って途中からでも許可できるファイル増やせる?