1 名前:デフォルトの名無しさん mailto:sage [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 質問箱 peace.2ch.net/test/read.cgi/tech/1131627583/ Microsoft SkyDrive API peace.2ch.net/test/read.cgi/tech/1385604796/ 【GoogleAppsScript】猿92【研究せよ!!!】 nozomi.2ch.net/test/read.cgi/php/1398600864/ GoogleAPIってどうよ? nozomi.2ch.net/test/read.cgi/php/1018614427/ Google App Engine for Python 6アプ目 nozomi.2ch.net/test/read.cgi/php/1358570953/ Google App Engine for java peace.2ch.net/test/read.cgi/tech/1317639323/ GoogleWebToolkit[GWT]について語ろう nozomi.2ch.net/test/read.cgi/php/1147975874/
157 名前:デフォルトの名無しさん mailto:sage [2014/12/13(土) 06:19:49.76 ID:KcZztYF+.net] nextToken送ってるかい
158 名前:デフォルトの名無しさん [2014/12/13(土) 10:37:05.12 ID:LHF4FOqU.net] >>157 アクティビティーのnextTokenは送ってるが、画像にもnextToken送れるんか・・?
159 名前:デフォルトの名無しさん [2014/12/16(火) 13:32:07.41 ID:PuXxa6T9.net] 尾骶骨
160 名前:155 mailto:sage [2014/12/20(土) 15:58:34.92 ID:2lHjoIS9.net] 自己解決した。スレ汚しスマソ
161 名前:デフォルトの名無しさん [2014/12/21(日) 17:54:05.71 ID:gQMH/TzB.net] トリガーをいくつか設定してみたけど 違うプロジェクトに同じ名前の関数があるとき トリガーの一覧には関数名しか出て来ないので どのプロジェクトの関数が呼ばれるのかあとで判らなくなるな
162 名前:デフォルトの名無しさん mailto:sage [2014/12/22(月) 04:11:59.65 ID:bPTJ7mQh.net] myFunction とか doGet とか言う名前のトリガーがいっぱいなんですね判ります
163 名前:デフォルトの名無しさん mailto:sage [2014/12/22(月) 07:19:01.01 ID:lHFqZpWk.net] >>162 周りから頭悪いって言われてない?
164 名前:デフォルトの名無しさん mailto:sage [2014/12/22(月) 08:16:40.37 ID:1JxRKZUV.net] >>162 頭の悪いレスですね
165 名前:デフォルトの名無しさん mailto:sage [2014/12/22(月) 10:30:02.86 ID:Kj8Ds363.net] うちはtestDoGet()って名前のトリガーが多いな
166 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 23:11:18.84 ID:Ubhx8o8Fm] 特殊文字って入力できる?¥だとそのまま表示されて\でやるとどれも空白になるんだけど
167 名前:デフォルトの名無しさん [2015/01/07(水) 08:21:41.41 ID:7s8hjn62.net] 古いけどメモ www.softantenna.com/wp/software/google-ime-dev/
168 名前:デフォルトの名無しさん [2015/01/07(水) 08:55:32.09 ID:7s8hjn62.net] memo www.softantenna.com/wp/hard/linux-in-chrome-os/
169 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 10:57:08.64 ID:aspvvccd.net] >>167 >>168 消え失せろカス。
170 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 12:21:43.55 ID:HwRBQ0K9.net] いまどき2ちゃんにアフィ貼っても件数稼げないのにようやるわ
171 名前:デフォルトの名無しさん [2015/01/12(月) 13:52:24.61 ID:MUt+Twlt.net] Google Drive のゴミ箱に溜まってたファイルを 永久に削除 を選んで消したのに残り容量が増えないぬ 先週くらいまではゴミ箱空にしたら容量増えたのに
172 名前:デフォルトの名無しさん mailto:sage [2015/01/14(水) 10:13:25.29 ID:pWmctPUO.net] >>171 恐らくだが どのフォルダにも属していない、検索の時だけ出てくるファイルがあるよ。消したつもりになってるだけでね。
173 名前:デフォルトの名無しさん [2015/01/14(水) 13:03:30.08 ID:EnBoJmyV.net] trash からも delete forever で確実に削除してたのに さっきログインしたら trash にあった 改めて消したら容量増えた ありがとう Google Drive ってたまにバグるみたいだぬ
174 名前:デフォルトの名無しさん [2015/01/20(火) 07:56:06.92 ID:F6HHv4j5.net] 勝手にアップデートされて以来 GoogleDriveは執事として無能な 時間泥棒に成り下がってしまった
175 名前:デフォルトの名無しさん [2015/03/06(金) 13:27:50.63 ID:BXX0fucD.net] AngularJS 2.0 は TypeScript で開発を進めることに techcrunch.com/2015/03/05/microsoft-and-google-collaborate-on-typescript-hell-has-not-frozen-over-yet/ Angular 2: Built on TypeScript blogs.msdn.com/b/typescript/archive/2015/03/05/angular-2-0-built-on-typescript.aspx
176 名前:デフォルトの名無しさん mailto:sage [2015/03/14(土) 19:02:02.06 ID:EXR76peq.net] Siteで新規ページ作成で自動生成されるurl文字列をscriptで再現する方法はないでしょうか? たとえば「試験-しけん-シケン」と入力すると自動では「shi-yan-shiken-shiken」というURLになるけど このルールでスクリプトから新規ページ作成を行いたいと思っているのですが
177 名前:デフォルトの名無しさん [2015/03/16(月) 02:46:33.19 ID:1GyT2oWU.net] 同じ名前でもう一つ作ってみ?
178 名前:デフォルトの名無しさん [2015/03/18(水) 22:55:28.68 ID:fCXDEV+f.net] GASで任意のURLを開くことはできますか? スプレッドシート上でも別タブでもどちらでも構いません。
179 名前:デフォルトの名無しさん mailto:sage [2015/03/19(木) 21:40:48.17 ID:htgmHUmd.net] >>178 自動的に開くのは無理 ダイアログ出してクリックさせて開くのはhtmlserviceで実現できる。
180 名前:176 mailto:sage [2015/03/20(金) 15:56:58.40 ID:+pnIcR/c.net] やはりリンク作ったりするのが精一杯なんですね。 わかりました。
181 名前:176 mailto:sage [2015/03/20(金) 17:37:45.26 ID:+pnIcR/c.net] HtmlService.createHtmlOutputにiframeタグを書いても インラインフレームの中に何も表示されないのは仕様ですか?
182 名前:デフォルトの名無しさん mailto:sage [2015/03/22(日) 13:09:15.36 ID:rj7656VH.net] >>181 GAS上ではiframeタグは使用禁止ですよ。 sandboxmode.iframeは使えますがね
183 名前:176 mailto:sage [2015/03/22(日) 21:40:15.35 ID:Exm92v9O.net] .setSandboxMode(HtmlService.SandboxMode.IFRAME); を付けてみてもダメでした。 もちろんNATIVEもダメでしたし、本当にあきらめるしかなさそうですね。 ちなみに表示させようとしていたページのURLは以下です。 www.google.com/search?btnI=I%27m+Feeling+Lucky&lr=lang_ja&ie=UTF-8&oe=UTF-8&q="+ss.getActiveCell ().getValue()
184 名前:デフォルトの名無しさん mailto:sage [2015/03/26(木) 11:07:18.75 ID:r/Xr85WG.net] Googleドライブ上にある複数のxlsを読み込んで、指定した文字を検索するhtmlをドライブ上で共有したいのですが この場合どうすればいいのでしょうか?script.google.comとかサッパリでした ある程度の英語とjavascriptは出来るので「ココ嫁」みたいなリファレンス貼ってくれるだけでも助かります
185 名前:デフォルトの名無しさん mailto:sage [2015/03/26(木) 13:13:42.53 ID:XgHUlE+o.net] >>184 HTML ServiceとDriveApp そして、siteにそのウェブアプリケーションを配置。 これで出来る。
186 名前:デフォルトの名無しさん mailto:sage [2015/03/26(木) 13:16:41.94 ID:XgHUlE+o.net] >>184 あと、手前味噌で申し訳ないが、色々作ってる eye4brain.sakura .ne.jp/
187 名前:デフォルトの名無しさん mailto:sage [2015/03/26(木) 15:18:18.76 ID:SuVdMCRs.net] xls読めるの?
188 名前:デフォルトの名無しさん mailto:sage [2015/03/26(木) 18:55:43.03 ID:r/Xr85WG.net] >>185 >>186 ありがとうございます、スクリプト参考にしてみます
189 名前:デフォルトの名無しさん [2015/03/26(木) 20:07:09.55 ID:xZ2N6kXB.net] >>188 xlsxの全文検索をしてみましたが、出来ました。 fullText containsオプションを使えば可能です。 ただし、たけのこという文字がセルに入ってる場合、「たけのこ」ではヒットしますが、「たけ」ではヒットしません。そういう仕様だそうです。以下に完成品をまとめておきましたので、参考にしてみてください。 goo. gl/coMk0P
190 名前:182 mailto:sage [2015/03/27(金) 00:58:25.79 ID:DYcS+Siy.net] 度々すみませんGoogleドライブに ・1.xls〜100.xls ・Data_list.xls とテキストシートがあって、1-100.xls上で行or選択範囲を指定して、その範囲内のテキストを使ってData_listで検索をし、結果を返すというモノを作りたいのですが @-1〜100まで全部一々スクリプトエディタで作成しなければならないんでしょうか?使いまわしできます? A-図形描写+スクリプト割り当てでイベントハンドラ作成する方法以外にシートから関数呼び出す方法はないんでしょうか? B-図形描写+スクリプト割り当てを1〜100まで毎回作成するの大変なんで使いまわしとかできないんでしょうか? C-関数の引数に行や選択範囲を指定できますか? 本当に初歩的な質問ばかりですみません openByUrl(Data_list)で読み込んでforで全部回す方法でmatchやったら検索は出来ました
191 名前:デフォルトの名無しさん [2015/03/27(金) 08:27:15.70 ID:XOU4xnaE.net] >>190 スクリプトはライブラリ化すれば使い回しが出来ます。 goo. gl/ExZZSb
192 名前:デフォルトの名無しさん mailto:sage [2015/03/29(日) 15:09:18.54 ID:Kc5qzo13.net] >>191 できました 毎度毎度ありがとうございます!
193 名前:デフォルトの名無しさん mailto:sage [2015/04/06(月) 19:06:09.55 ID:Uo28IzYD.net] script.googleにてディレクトリに存在するファイル全て開いて検索するプロジェクトのgsファイルを作ってるんですが コード.gsて一度に開けるファイルの数や容量の制限ありますか?
194 名前:デフォルトの名無しさん mailto:sage [2015/04/07(火) 11:43:06.04 ID:Dj35uwLZ.net] ちょっとした質問なんですけどDriveApp.getRootFolder()みたいに共有アイテムにある「textフォルダ」を取得する方法ってないですか?
195 名前:デフォルトの名無しさん mailto:sage [2015/04/09(木) 18:24:15.60 ID:Rhj0QTuK.net] こっちで聴いてみては? kanae.2ch.net/test/read.cgi/php/1398600864/
196 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 21:16:39.83 ID:yuSJQZvz.net] 1.gmailの受信メールをチェック ↓ 2.特定タイトルのメールの送信者を抽出しリストアップ ↓ 3.別のリストとマッチングさせメール未送信者を特定 ↓ 4.未送信者に注意メールを送信 GAS初心者なのですが 上記のようなシステムを構築したいと考えています。 1.2.4はGASとスプレッドシートを使えば簡単に実装できそうなのですが 3もGASやappsのみで構築可能でしょうか? スプレッドシートのマッチングについて 少し調べて見ましたが、明確な回答は見つかりませんでした。 よろしくお願いします。
197 名前:デフォルトの名無しさん mailto:sage [2015/04/13(月) 07:45:32.11 ID:eHLkbahF.net] >>196 可能 普通にリニアサーチでメアドリストと1つづつイコールかどうか 確認するループを作ればいいだけ
198 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 08:06:25.22 ID:VGcTHgGl.net] >>197 ありがとうございます!
199 名前:デフォルトの名無しさん mailto:sage [2015/05/20(水) 20:15:39.64 ID:L+8WGw0p.net] 最近始めたんだけどこれmydriveにアップしたExcelを読み込む事は出来ないのかな getDataAsString()でも文字化けしたのしか取得できないし スプレッドシートに変換すりゃいいんだろうけどそのまま読み込む方法ないのかね
200 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 08:22:41.16 ID:nwV8enKl.net] >>199 だったら、文字コードでも指定すればいいんじゃねぇの
201 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 08:29:47.62 ID:x9iUxaW9.net] >>200 Excelは文字コード以前に形式違うからstringで取得できない
202 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 09:50:23.52 ID:x9iUxaW9.net] エクセルはどこでも話題になるけどDriveApp.searchFiles()で一応文章検索はできるから セルのstring情報はどっかに記録されてる ただ引き出して扱えるかどうか知らん
203 名前:デフォルトの名無しさん [2015/05/21(木) 10:56:25.53 ID:ESp1pCeJ.net] 馬鹿には無理
204 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 13:26:54.06 ID:RCwHiUWn.net] 最高にキモいな
205 名前:デフォルトの名無しさん mailto:sage [2015/05/22(金) 12:42:30.36 ID:jHm+8nxR.net] >>199 Drive APIを使えば出来るよ。 qiita.com/soundTricker/items/16e75762404f560e4ca2
206 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 21:40:53.24 ID:P22nVuYt.net] >>205 1年前のなんて古くて使いモンにならないってのがよくわかるな oauth 1.0ってアンタ
207 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 08:07:09.69 ID:lvaBWQ33.net] >>206 君はGoogleのドキュメントがろくにメンテされてないこと知ってんの? それと、GASで使うのにOAuthなんて使わないよw JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに 関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え ない発言だなw
208 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 11:08:24.77 ID:fMt5EoRl.net] > それと、GASで使うのにOAuthなんて使わないよw ひょ、標準APIとの違いも解らない奴がココに居るのか ちょっとキミにはこのスレちょっと早い
209 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 14:12:37.86 ID:GScIfku9.net] 煽るだけで具体例のない言葉は何の役にも立たねって ばっちゃが言ってた
210 名前:デフォルトの名無しさん [2015/05/27(水) 15:16:08.57 ID:jmeRjzK/.net] 知らないから自演も満足に出来ないんだろうが 煽り方が下手だと思う
211 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 16:25:43.57 ID:smOTLbR3.net] >>208-209 だから、使ってからほざけよ。 コード書いてみ?GAS内でDrive API使うコードをな。 実際に開発やってる奴に、釈迦に説法って言葉覚えておけよ三流。
212 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 16:29:32.25 ID:smOTLbR3.net] >>206 それとお前。 OAuth1.0だから何?そんなもの自分で2.0の実装でも換装すりゃいいだけの 話だろww 馬鹿なの?それとも2.0のコードでも書けとか言ってるわけ?馬鹿には無理だ から引っ込んでろ
213 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 20:42:22.92 ID:iPQChm+t.net] なんか急にonEditのe.userにメールアドレスが入ってこなくなったんだが 同じ現象の人いる?
214 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 09:53:52.42 ID:/8nOg4qQ.net] これで良くね ttp://stackoverflow.com/questions/26702330/why-does-google-apps-script-return-a-url-rather-than-a-pdf-file-when-i-try-to-cr
215 名前:デフォルトの名無しさん [2015/06/02(火) 10:59:19.63 ID:CxAq+Stxh] 書式設定を変えるようなスクリプトを作っても反映されないんだけど、 スプレッドシートの既知の問題? 例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても 折り返してくれない。 (ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す) function test() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange('A:A'); range.setWrap(true); } この問題って、既に書式設定してあるセルにフォームから文字列が入力されても 同じ事が起きるんだけど、地味に困ってる。
216 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 08:54:21.97 ID:0Vy1Z1yY.net] >>213 そんなのしょっちゅうあるぜ? session.userなんてメアド取れなくなったりとかね。 Googleって馬鹿だからバグ採りもせずにデプロイしてやがるのでこういうことがGoogle Apps for Workでも起きていてもんだいになってる。
217 名前:デフォルトの名無しさん [2015/06/08(月) 13:38:40.43 ID:rJB8iCDI.net] Googleって独りよがりだよな
218 名前:デフォルトの名無しさん [2015/06/11(木) 09:07:55.30 ID:DJZgiAWM.net] 書式設定を変えるようなスクリプトを作っても反映されないんだけど、 スプレッドシートの既知の問題? 例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても 折り返してくれない。 (スクリプト実行後、ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す) function test() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getRange('A:A'); range.setWrap(true); } この問題って、フォームから文字列が入力されても既に書式設定してあるセルで 同じ事が起きるんだけど、地味に困ってる。
219 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 10:07:42.64 ID:7lwiQU6T.net] TwitterBotを作成しているのですが OAuth1 for Apps Script https://github.com/googlesamples/apps-script-oauth1/blob/master/samples/Twitter.gs にCONSUMER_KEYとCONSUMER_SECRETを入れてrunを実行しても投稿されません。 ログには Open the following URL and re-run the script 表示されるアドレスにアクセスするとSuccess!と表示されますが投稿されません。 どうしたら投稿できるようにできますか?
220 名前:216 mailto:sage [2015/06/12(金) 10:12:38.54 ID:7lwiQU6T.net] >>219 動きました。すみません。
221 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 16:05:55.82 ID:qp6MkQCv.net] どういたしまして
222 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 17:28:28.59 ID:7lwiQU6T.net] atomのlinkのhrefを取得したいのですがどうすればいいのでしょうか function kochiRSS() { var sheet = SpreadsheetApp.getActiveSheet(); var row = 1; var feedURL = 'www.pref.kochi.lg.jp/news/index.atom '; var xml = UrlFetchApp.fetch(feedURL).getContentText(); var document = XmlService.parse(xml); var root = document.getRootElement(); var atom = XmlService.getNamespace('www.w3.org/2005/Atom '); var entries = root.getChildren('entry', atom); for(i in entries) { var title = entries[i].getChild('title', atom).getText(); var link = entries[i].getChild('link', atom).getValue(); var updated = entries[i].getChild('updated', atom).getText(); sheet.getRange(row,1).setValue(title); sheet.getRange(row,2).setValue(link); sheet.getRange(row,3).setValue(updated); row++; } sheet.sort(3, false); }
223 名前:デフォルトの名無しさん [2015/06/12(金) 18:11:48.05 ID:qp6MkQCv.net] .getAttribute('href').getValue();
224 名前:219 [2015/06/12(金) 20:37:23.23 ID:RT2PlkdQ.net] 220 できましたどうもありがとうございます。
225 名前:デフォルトの名無しさん [2015/06/13(土) 03:16:47.88 ID:NUKk6CPY.net] どういたしまして
226 名前:219 [2015/06/13(土) 08:02:49.41 ID:YFXshuK4.net] たびたびすみません。 RSSを取得するプログラムを作っているのですが RSS2.0は var items = root.getChild('channel').getChildren('item'); ATOMは var entries = root.getChildren('entry', atom); で取得できるのですが RSS1.0だとitemが<item rdf:about="記事のURL">なため var items = root.getChildren('item'); では取得できません。 どういう書き方にすれば取得できるようになるのでしょうか?
227 名前:デフォルトの名無しさん [2015/06/13(土) 08:38:19.04 ID:NUKk6CPY.net] 馬鹿には無理
228 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 20:19:34.38 ID:ZKnt+LAz.net] なんだこいつ
229 名前:デフォルトの名無しさん [2015/06/14(日) 06:25:18.68 ID:Gz1SNEoH.net] 馬鹿には(回答は)無理
230 名前:デフォルトの名無しさん mailto:sage [2015/06/14(日) 06:41:51.88 ID:l6qAkUnh.net] 一部変な奴もいるけど気にせずに馬鹿はどんどん質問してくださいな
231 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 13:48:50.97 ID:6FCFdlNB.net] もっとやさしくしてください
232 名前:デフォルトの名無しさん [2015/06/15(月) 20:34:44.01 ID:TKCLtNo1.net] 正直、DOM系の話題はなしにしたいものだ DOMの話題ってjsの使い方一辺倒になっちまうから GASそのものの本質を追究する姿勢が培われなくなってしまう
233 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 20:57:28.70 ID:vJyBnBQX.net] GASはハウツー的な日本語ドキュメントが少ないから仕方ないかと 誰かその辺りをまとめてくれると(俺も)助かるんだがなー…(チラッチラッ
234 名前:デフォルトの名無しさん [2015/06/15(月) 23:47:37.55 ID:YPgI+YQd.net] >>226 >RSS1.0だとitemが<item rdf:about="記事のURL"> 属性はattributeと言う。 こんな感じかな。 items[0].getAttribute("about","rdf").getValue(); 上は未実証なので詳しくはreferenceを参照。 https://developers.google.com/apps-script/reference/xml-service/element#getAttribute(String,Namespace)
235 名前:223 [2015/06/17(水) 05:49:31.92 ID:pjaGN1aW.net] ありがとうございます。 rdf:aboutのようなのは名前空間というみたいで XmlService.getNamespaceを指定すると使えるようです。 詳しくはこちらに載っていました。 https://msdn.microsoft.com/ja-jp/library/aa468565.aspx
236 名前:デフォルトの名無しさん [2015/06/17(水) 14:14:39.78 ID:T4rbUCsj.net] いやここはGASのスレだしw XMLの基本を鼻高々に解説されても
237 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 16:12:56.82 ID:7KhQ6AFD.net] >>236 わかればよろしい
238 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 15:54:55.56 ID:jfSOFpG/.net] google apps script のウェブアプリケーションの公開するとき 指定したグーグルアカウントだけに利用させるって出来ないんですかい? 共有でそういうのあったんですけど、共有はコード見れるとかそういうのだったんで
239 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 17:35:30.60 ID:0T0Q+C6j.net] スレ違いだけどできないはずはないと思うよ appsにアカウント登録できるはず
240 名前:デフォルトの名無しさん [2015/07/01(水) 07:45:04.29 ID:WrSpGcQO.net] >>238 1) googleアカウントでログインしてるユーザーだけに実行させることが出来る 2) アプリケーション側でどのアカウントで実行されているか把握することが出来る 1) と 2) を組み合わせれば可能
241 名前:235 mailto:sage [2015/07/01(水) 15:27:56.64 ID:s1huTgGg.net] 出来たよありがとう "無ければ作れ"がGASでも通用したとか最高だ
242 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 15:58:11.31 ID:WrSpGcQO.net] おめおめ
243 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 14:34:59.39 ID:PdgAmMn6.net] GASに初トライしていて問題にブチあたりました。 解決方法があれば教えてください。 ■やりたいこと スプレッドシート内で 外部ページ情報を取得しリアルタイム・もしくはインターバル更新表示しい。 基本は自動更新 ■更新条件 スプレッドシートを開いた スプレッドシートのセルにユーザーから入力があった。 の両方です。 ■ためしたこと。 1.=ImportXMLを使って取り込み 単純な目的は果たせるがセルに埋め込むと取得データを加工するにしても限度がある。 また、同じURLを指定したセルが複数ある場合、同じデータなのにアクセスさせるのが無駄 2.GASでImportXML相当のことをしてみる セルから呼び出せる関数でUrlFetchApp.fetchを使ってみる。 当初の目的は果たせるようになったが、セルの数が多く、 またスクリプト実行テストを繰り返しているとあっというまに1日の呼び出し回数制限に達してしまう(無料アカなので2万回) 3.呼び出し制限に達しないようにするための工夫 URLから取得した情報をプールしておき、前回取得からのインターバル時間を経過したら再取得してキャッシュ更新。 または、キャッシュに存在しないデータを要求された場合もキャッシュ更新。 キャッシュ場所は、自分のスプレッドシート内にcacheシートを生成してそこに書き込んでおく。 4.3までのロジック実装は完了し、スクリプトエディタの関数実行テストまでは正常完了 続きます。
244 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 14:44:48.33 ID:PdgAmMn6.net] 4からが問題でして、エディタ内の関数単体テストでは、データ取得・キャッシュシート生成まで問題なく動作しました。 しかし、これの関数をセルから呼び出そうとするとエラーになります。 エラーはシートに対して操作権限がないといわれます。 調べたところセルで関数を呼び出した場合、 var ss = SpreadsheetApp.getActiveSpreadsheet(); var cacheSheet = ss.getSheetByName( g_stocksSheetName ); で取得したシートに対して、作成・修正・削除などの操作が出来ないようです。 つまりセルから呼び出した場合オブジェクトの参照関数しか呼び出しが許可されない? ss.insertSheet( 'cacheSheet' ) とか cacheSheet.getRange( 1, 1 ).setValue( new Date() ); もダメでした。 5.イベントハンドラを使ってみる しょうがないので、書き込み権限を与えてくれそうな仕組みがないかテストしていたところ onEvent,onOpenなどならいけそうだったので、 onEventから呼び出してみました。 すると、シート作成・データセットまではうまくいきますが、 UrlFetchApp.fetchでエラーになっているらしく、 上流で捉えた例外は fetch を呼び出す権限がありません でした。
245 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 14:54:35.26 ID:PdgAmMn6.net] 6.キャッシュの保存場所 自分に書き込めない場合、どっかに保存できないの?と思い調べてみると ScriptDb とか言うのがあるみたいですが、サービス終了予定の機能ぽいですし、 Google Cloud SQLとかいうのを使うしかない?有料?? ■知りたい事 ・1〜6の流れで問題となっているアクセス権を解決できる方法はありますか? ・無理な場合の代替え手法はありますか? ・そもそもアプローチが間違っている、こうしたほうが良いよ。 という感じでうs。 このまま、いろいろ渡り歩いていても遠回りになりそうな予感なので質問してみました。 よろしくお願いします。
246 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 15:38:30.72 ID:IUri6wsi.net] >>245 htmlservice + oauth2
247 名前:240 mailto:sage [2015/07/06(月) 03:19:41.60 ID:c4e3DSSP.net] >>246 > >>245 > htmlservice + oauth2 ありがとうございます。 調べてみます。
248 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 01:32:45.09 ID:OGGfcKdI.net] htmlからツイにつぶやくのをやってたら (>_<)この顔文字が(>_<)こんななってたぶんそのせいででエラー吐くんだけどこれはreplaceすればいいのかな? こういう表記になる文字ってたくさんあるのかな?
249 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 04:21:52.11 ID:FHtVzgus.net] 君にふさわしい板はこっち kanae.2ch.net/php/
250 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:42:58.38 ID:5Rsbcn5E.net] >>248 おいてめーそれ「はじめてのホームページビルダー」レベルじゃねぇか
251 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:01:03.10 ID:oRYg8bj0.net] >>248 そういうのはエンコードすべきなんじゃないのか?
252 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:17:38.40 ID:Nj43MlcH.net] >>249 PHPはちょっと良くわかんないです gasですし >>250 そうなんですよね〜 初心者なんです >>251 エンコードですか 調べてみます
253 名前:240 mailto:sage [2015/07/12(日) 18:50:40.39 ID:yhZDzWcx.net] >>246 > >>245 > htmlservice + oauth2 あれから調べてみましたが、これらを使ってどうアプローチしていいか分かりませんでした。 どういうアプローチを取って良いのか、もう少し詳しく教えていただけないでしょうか? 自分が上でやっていてダメだったアプローチは以下のAuthorization modesをみると納得なのですが https://developers.google.com/apps-script/add-ons/lifecycle これらの状況の中でどうやって目的を達成していいか分かりませんでした。 Htmlservice, oauth2ということだったので、 外部サイト情報から取得したキャッシュをHtmlにしてGoogleDrive側に保存すればいいのかな? とか思っていたのですが、 AuthMode.LIMITEDやAuthMode.CUSTOM_FUNCTIONでは他のサービスへのアクセスは Any services that don’t access user data とのことで、キャッシュを書き込めないようです。 実際に試してみましたが、スクリプト単体テストではOKでしたが、イベントハンドラから呼び出すとDrive周りの関数で権限がないといわれました。 oauth2に関してはいまいちよく分かりませんでした。 他社サービスIDなどで別サイトのサービスにアクセスする場合などの認証などに使ったりするようですが、 Googleのアカウントで自身にログインして何かをしろという事でしょうか? どちらにしろ、AuthMode.FULLで行えるような権限を得られないと、 ・キャッシュを作るための外部サイトアクセスとコンテンツ取得 ・取得したコンテンツから生成したキャッシュデータの保存(シートorファイル) が実現できないと思うのですが、どうでしょう?
254 名前:デフォルトの名無しさん [2015/07/12(日) 19:09:03.00 ID:slCoB0p4.net] 設定間違えてるに+1
255 名前:デフォルトの名無しさん [2015/07/13(月) 17:53:46.10 ID:UxTEJ+9t.net] node.js / io.js 動けばいいのにね
256 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 20:57:05.83 ID:70iQnSqB.net] 新たなるオライリー本か? www.amazon.co.jp/dp/B00TN97BE2
257 名前:デフォルトの名無しさん mailto:sage [2015/07/19(日) 04:21:49.78 ID:eNaDFGYO.net] 分かる人がいたら教えて下さい function upload() { var clientId = '*************'; var imgUrl = 'www.google.co.jp/images/srpr/logo11w.png '; var service = getService(); //aouth2のなんか if (service.hasAccess()) { var url = 'https://api.imgur.com/3/image'; var response = UrlFetchApp.fetch(url, { //ここでエラーが出る method: 'post', headers: { Authorization: 'Client-ID ' + clientId, }, data: { image: imgUrl, type: 'URL' } }); var result = JSON.parse(response.getContentText()); return result; } else { こういうエラーが出ます {"data":{"error":"No image data was sent to the upload api","request":"\/3\/image","method":"POST"},"success":false,"status":400} どこが間違えてるんでしょうか imgur apiのページ https://api.imgur.com/