【MACRO】Google Apps Script 質問スレ【DRIVE】
1 :デフォルトの名無しさん :2014/06/29(日) 11:07:03.38 ID:5HmND7Qc.net 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/
906 :デフォルトの名無しさん :2023/02/18(土) 18:58:41.14 ID:W3nKwjDO.net >>905 自己解決。 というか諦めて別シートに呼び出した後substituteとxlookupの組み合わせで無理やり置換したのを表示させました。
907 :デフォルトの名無しさん :2023/02/19(日) 14:19:59.95 ID:bukleA+Y.net >>905 日立?
908 :デフォルトの名無しさん :2023/02/19(日) 22:06:54.53 ID:sztA44Ir.net >>905 spliceで置き換える https://gray-code.com/javascript/replace-item-for-array/
909 :デフォルトの名無しさん :2023/02/20(月) 02:05:22.77 ID:6OqVkYRD.net >>908 ありがとうございます!spliceメソッド使ってみます。 その前に1つずつ検索かけるのに手古摺ってますが、なんとかやってみたいと思います。
910 :898 :2023/02/20(月) 16:04:41.81 ID:4jGYSd8p.net 駄目でした… includesにしてもmatchにしても配列[ ]で指定するとうまく動いてくれません。 配列を作らずfor文で無理やりセルを置換させるという荒業で解決しましたが時間がかかり過ぎて実用的でなく。 やりたいこと table[[あ],[か],[さ],[た]...] before[あ][い]... after[ア][イ]... 以上の配列があり、 tableに対しbefore[i]を総当りで検索し一致したらafter[i]に置き換える。
911 :デフォルトの名無しさん :2023/02/20(月) 18:43:52.85 ID:czK6pNoa.net >>910 やりたいことがいまいちわからん こういうこと? # ひらがなをカタカナに変換 table = [['あ','ア'], ['い','イ'], ['う','ウ'], ['え','エ'], ['お','オ'] ]; before = ['あ','い','う','え','お']; after = before.map(b => table.find(a => b === a[0])[1]);
912 :898 :2023/02/20(月) 18:49:29.88 ID:83YdaF3i.net ありがとうございます。配列の中身は適当です…。 表と配列2種類の3つの要素があって、表にある配列1の要素を見つけたら配列2に置き換えるということをしたかったのです。 ですがお陰様でなんとかなりました! 二次元配列をflat()で一次元にして、splice使いました。 その後再度2次元配列に戻して元の形に直しました。
913 :898 :2023/02/21(火) 00:26:18.85 ID:B3qxCQs3.net >>911 mapメソッドはまだ理解できておらず…。 その一行で終わらせられるように勉強していきたいと思います。 結局以下のようになりました。ご教授ありがとうございました。 //1次元配列への変換。 let array = array.flat(); //array[x]とbefore[i]が一致したら置換(before→after) for(let x = 0 ; x < array.length ; i++ ){ for(let i = 0 ; i < before.length ; i++ ){ if(array[x] == be[i]){ array.splice(x,1,after[i]); } } //2次元配列に再変換、あとで貼付する。 let array2 = []; let numOfElements = 6;//表の元のTableが6列あったので。 for(let t = 0; 0 < array.length ; t){ array2.push(array.splice( t, numOfElements )); }
914 :デフォルトの名無しさん :2023/02/21(火) 02:43:28.40 ID:6tAoYaOK.net >>913 flat使わなくてもいい for(let i = 0; i< array.length; i++) { for(let j = 0; j< array[i].length; j++) { if(before.includes(array[i][j])) { array[i][j] = after[before.indexOf(array[i][j])]; } } } map使うなら array2 = array.map(r => r.map(c => before.includes(c) ? after[before.indexOf(c)] : c));
915 :898 :2023/02/21(火) 08:58:31.52 ID:B3qxCQs3.net >>914 そのarray[i][j]の[j]を入れるとindexOfにしてもincludesにしてもうちの環境?では何故かエラー出て読み込めなかったんですよ。( 確かcannot read properties of undefinedだった筈) それ外すとエラーなく読んだので仕方なくflat入れた次第です。 因みに arrayX=array[x] arrayY=array[y] みたいに入れ子しても駄目でした。
916 :898 :2023/02/21(火) 09:10:16.56 ID:B3qxCQs3.net 確認したらエラー全然違うし書いてること散々でした 訂正 出てたエラーは多分is not defined 下の入れ子は arrayX=array[x] arrayY=arrayX[y] みたいにしても同じエラーだったかと。
917 :デフォルトの名無しさん :2023/02/21(火) 23:07:45.74 ID:6tAoYaOK.net >>915 >そのarray[i][j]の[j]を入れるとindexOfにしてもincludesにしてもうちの環境?では何故かエラー出て たぶん配列の添字が範囲外になってるんだろうけど for文よりfor ofとかforEachのほうがシンプルにかける const array2 = []; for(let row of array) { let cols = []; for(let col of row) { if(before.includes(col)) { cols.push(after[before.indexOf(col)]); } else { cols.push(col); } } array2.push(cols); } const array2 = []; array.forEach(function(row, i) { row.forEach(function(col, j) { if(before.includes(col)) { array[i][j] = after[before.indexOf(col)]; } }); });
918 :デフォルトの名無しさん :2023/02/21(火) 23:08:33.93 ID:6tAoYaOK.net あと上のmapは省略しすぎてわかりにくかったのでアロー関数と三項演算子をやめたらこうなる const array2 = array.map(function(row) { return row.map(function(col) { if(before.includes(col)) { return after[before.indexOf(col)]; } else { return col; } }); });
919 :898 :2023/02/22(水) 11:50:37.27 ID:7vReBJfV.net >>917-918 何度もありがとうございます。 仰るとおり2度目の添字は一切読み込んでくれないので… >>918 のmap参考にしながら勉強させていただきます。 とりあえず長くなってしまったのでこの辺りで。また不具合出てきたら改めて質問したいと思います。 ありがとうございました!
920 :デフォルトの名無しさん :2023/02/28(火) 21:38:42.26 ID:8PRLUyLU.net スプレッドシートの共有で閲覧権限を持っている人の 印刷は可能でファイルのダウンロードだけ禁止することは可能でしょうか?
921 :デフォルトの名無しさん :2023/03/01(水) 10:13:26.28 ID:NPxLOyBL.net 共有アイテムのファイルにスターをつける方法を教えてください 宜しくお願いしますm(_ _)m
922 :デフォルトの名無しさん :2023/03/01(水) 14:17:21.21 ID:csCK6+UB.net sheetクラスを取得する方法ってgetSheetByNameとgetActiveSheetしかないよね? getSheetBySheetIdがないのが謎なんだけどシートはシート名で管理するしかない?
923 :914 :2023/03/12(日) 00:26:03.80 ID:ZZBXPzbK.net >>921 自己解決しました
924 :デフォルトの名無しさん :2023/03/24(金) 19:19:34.21 ID:GCLzu5nr.net Rangeオブジェクトから、セルアドレスの文字列を取得したい場合 Excelならr.Address()で相対参照や絶対参照を取得できますが GASで同じようなことできるメソッドあります? getA1Notation()だと相対アドレスでしか取得できないようで…
925 :デフォルトの名無しさん :2023/03/24(金) 20:40:28.68 ID:h6PMjTMa.net >>924 よく分かってないけどそれ意味あるの? ただの文字列なんだから相対も絶対もないような
926 :デフォルトの名無しさん :2023/03/25(土) 11:52:56.28 ID:TC3JXJ5y.net >>925 例えば A1のRangeオブジェクトから $A$1という文字列を取得できないかなと GASから条件付き書式を設定するのに使いたいです なぜ使いたいかというと 複数人で編集してコピペを繰り返すと条件付き書式が破壊されてしまうので それを上書きリセットするためです 逆に、条件付書式だけロックかけて切り取ったり貼り付けたり出来ない設定ができるならそれで十分なのですが…
927 :デフォルトの名無しさん :2023/03/25(土) 17:53:03.57 ID:nYxwu6kr.net >>926 >複数人で編集してコピペを繰り返すと条件付き書式が破壊されてしまうのでそれを上書きリセットするためです 通常の書式ならonEditで変更されたセルの書式を変更するだけでいいけど 条件付き書式をGAS上で扱ったことなかったから調べたけどちょっと面倒だね そんでよくよく考えてみたらそもそもGAS使うならonEditで書式変更すればいいだけだから条件付き書式を使う必要がないと思った
928 :デフォルトの名無しさん :2023/04/04(火) 12:37:38.49 ID:dAPefWGR.net スプレッドシートにスクリプト作成して権限付与して動作するように設定したあと そのスプレッドシートをコピーするとスクリプトもコピーされるようですが スクリプトの権限やトリガーは設定しなおしが必要のようです。 イメージ的には、vba付のExcelをコピーして別ファイルとして保存して 毎月のデータを作成していく、みたいなことがしたいんですが その辺コピーするだけで全部引き継がれるみたいな設定ないのでしょうか?
929 :デフォルトの名無しさん :2023/04/11(火) 18:45:08.89 ID:u8YBlLPL.net 類似画像を判別できるようなライブラリとか公開されてるコードありますか? 検索するとpythonだとImageHashってライブラリがあるんだけどGASで同じようなことしたい
930 :デフォルトの名無しさん :2023/04/21(金) 16:25:28.26 ID:vnxhj4My.net ごめんgoogleスプレッドシートの質問スレがみつからずこちらで質問させてください。 シートのある列をユーザーごとの閲覧を制限かけたい 有効な方法ありますか?
931 :デフォルトの名無しさん :2023/04/21(金) 16:53:56.40 ID:8VcMj5ya.net 閲覧の制限はファイル単位でしか出来ないでしょ シート、セル(列/行)単位は編集の制限しか出来ない
932 :デフォルトの名無しさん :2023/04/21(金) 17:40:05.18 ID:vnxhj4My.net ありがとうございます。 確かに「表示」→「保護されている範囲」でできそうだったけど。やっぱりだめでした。 諦めて、もう一つリンクしたファイルのシート作ってそちらに閲覧されたくない列を追加します。
933 :デフォルトの名無しさん :2023/05/02(火) 21:52:22.95 ID:39G20EoK.net Googleカレンダーに予定を追加するプログラムを使ってるんだけど、「場所を追加」ちゃんと場所を追加したいです 以下詳細 普通に手作業でGoogleカレンダーに予定を追加するときは、「場所を追加」に場所の名前を入力すると候補が出てきて、そこから選ぶと、そこに間に合うためには何時に家を出ればいいかの通知が来たり、Android版のGoogleカレンダーだと予定の背景がその場所の写真になったりします。 で、GASで予定を追加するとき、場所を指定するためにGoogleマップのURLを使ってるんだけど、それだとURLが表示されるのみで、上記の通知とか背景写真とかが実行されません。 公式ドキュメントでも {location: 'Conference Room'}とされており、Googleマップ上の場所を使う気がなさそうです。 ちゃんとした「場所の追加」は、ウェブ上でマウスで操作しないとできないのでしょうか?
934 :デフォルトの名無しさん :2023/05/03(水) 00:25:10.26 ID:2fvruydV.net >>933 URLじゃなくてその場所の名前か住所、もしくは緯度経度を入れればいいんじゃないの?
935 :デフォルトの名無しさん :2023/05/03(水) 03:09:39.55 ID:CT7gAj9T.net >>934 それが名前や住所を入れても、その文字列が表示されるだけのようです こんな感じ https://i.imgur.com/pn88z8w.jpg ブラウザかアプリで場所を選択した時には場所と認識されるのか、こう表示されます https://i.imgur.com/k3K5mhe.jpg
936 :デフォルトの名無しさん :2023/05/16(火) 22:03:10.90 ID:9Kd/3stA.net ゲッ!!(/||| ̄▽)y-ξ⌒◇ヾ( ̄  ̄;)ジュッ
937 :デフォルトの名無しさん :2023/07/08(土) 12:42:20.50 ID:CwJ0Byq0.net 質問させてください Googleフォームの送信時イベントで入力された値を取るために イベントを作成しましたが、どうしてもイベントパラメータがnullになってしまいます Webページにあるサンプルではeからいろいろな情報が取れるように書かれているのですが、nullとなってしまう理由がわからずに困っています function myFunction(e) { Logger.log("myFunction start") Logger.log(e) } — ログ 12:27:10 お知らせ 実行開始 12:27:10 情報 myFunction start 12:27:10 情報 null 12:27:10 お知らせ 実行完了
938 :デフォルトの名無しさん :2023/07/08(土) 17:00:03.61 ID:IeBiUrvH.net >>937 トリガーの設定してる?
939 :デフォルトの名無しさん :2023/08/22(火) 23:04:26.43 ID:+ZplHR9+.net GASではなく、スプレッドシートの質問なのですが、もし適切なスレッドがあったら誘導お願いします セルに例えば「130409.67」と入力し、 表示形式>数字>通貨(端数切り捨て) に設定すると、小数点以下が切り捨てではなく四捨五入されてしまいます。 これはなにか私の使い方がおかしいのでしょうか? また、他の方法でも良いので、内部的には小数点を保持しつつ、表示上だけ小数点以下を切り捨てる(非表示)する方法があれば教えてください。宜しくお願いします。
940 :デフォルトの名無しさん :2023/09/10(日) 09:27:06.36 ID:yM7j2B0I.net オhル
941 :デフォルトの名無しさん :2023/09/22(金) 13:52:01.19 ID:dkRHHNCe.net GTKは糞
942 :デフォルトの名無しさん :2023/09/24(日) 09:36:46.05 ID:2YTVyUlC.net 君は失格 やり治せ
943 :デフォルトの名無しさん :2023/10/20(金) 12:46:49.67 ID:/M3RKJCH.net GAS抜きで
944 :デフォルトの名無しさん :2023/10/20(金) 20:23:13.56 ID:c9EoYnQA.net >>939 =trunc(3.14, 0) で3と表示されるはず
945 :デフォルトの名無しさん :2023/10/31(火) 16:30:00.40 ID:qmiHWWBC.net >>944 ありがとうございます それを入力したセル(A1)の隣に、 =A1×8 とすると、24と出るので、内部で小数点以下を保持してないようです
946 :898 :2023/10/31(火) 17:43:19.30 ID:F7pL/7Za.net >>945 truncは切り捨てかな。 というかカスタム表示形式の # じゃ駄目なん?
947 :デフォルトの名無しさん :2024/03/10(日) 15:35:26.40 ID:H28l+VF2.net スプレッドシートについての質問です。 SBI証券のマイページからポートフォリオのcsvファイルをダウンロードすることができます。 GASにより、自動で、ポートフォリオの円グラフを作りたいのですが、スクリプトはコンテナバインドではなくスタンドアローンでないと駄目でしょうか? 毎日、csvファイルをダウンロードして、円グラフを描く予定なので、コンテナバインドだと駄目ですよね?
948 :デフォルトの名無しさん :2024/03/10(日) 15:38:07.27 ID:H28l+VF2.net でもスタンドアロンにすると、スプレッドシートを開くときに、ファイルのIDを指定しないと駄目ですよね。 このIDが毎日変わることになると思いますが、この部分をどうすれば楽ができるでしょうか?
949 :デフォルトの名無しさん :2024/03/10(日) 15:55:50.28 ID:vw/rAwFk.net なんでコンテナバインドじゃだめなの? トリガーで1日1回実行すればいいんじゃないの
950 :デフォルトの名無しさん :2024/03/10(日) 16:29:51.77 ID:H28l+VF2.net >>949 自動でダウンロードして来るとかそういうことを想定していますか? そういう技術はありませんので、手動でダウンロードしてきて、Google Driveにアップロードする。 これを毎日やろうと考えています。 そうするとファイル自体が毎日変わりますし、IDも変わってしまうのではないかと思います。 バインドを新しい他のファイルに引き継ぐことはできませんよね?
951 :デフォルトの名無しさん :2024/03/10(日) 16:50:03.03 ID:vw/rAwFk.net >>950 ファイルIDが変わってもファイルを保存するフォルダが固定なら そのフォルダのファイル一覧を取得すればいいんでは?
952 :デフォルトの名無しさん :2024/03/10(日) 17:01:06.12 ID:H28l+VF2.net >>951 なるほど、ありがとうございました。 そういうことができるんですね。 ということは、スタンドアロンである固定したフォルダからファイルの一覧を取得する。 SBI証券からダウンロードしてきたcsvファイルは、その日の日付をファイル名とする。 ファイルの一覧からその日の日付のファイルをオープンして、円グラフを作成する。 ありがとうございました。
953 :デフォルトの名無しさん :2024/03/11(月) 11:33:26.37 ID:Voh59fAx.net csvファイルに、 '+7441000 というデータがあります。 これをSpreadsheetとしてインポートすると、セル上で +7441000 と表示されます。 先頭に「+」がついていますが、扱いは文字列ではなく、数字です。 この「+」をGASを使って削除したいのですが、どうすればいいでしょうか? このセルを選択した状態で「fx」の右隣をみると「'+7441000」となっています。
954 :デフォルトの名無しさん :2024/03/11(月) 21:30:14.93 ID:Voh59fAx.net >>953 なんとか解決しました。
955 :デフォルトの名無しさん :2024/04/04(木) 12:51:32.09 ID:q67OTvc3.net getUi().showModelessDialog()の挙動おかしくなった? 他をクリックしたら閉じるようになったし移動も出来なくなった バグですか?
280 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者