X



【MACRO】Google Apps Script 質問スレ【DRIVE】
0001デフォルトの名無しさん
垢版 |
2014/06/29(日) 11:07:03.38ID:5HmND7Qc
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/
0122デフォルトの名無しさん
垢版 |
2014/11/27(木) 20:46:04.08ID:LqnFWsaO
Vue.js 試してみたけどだめ

TypeError: Cannot define property:$set, object is not extensible.
TypeError: undefined is not a function

使えねー (GASが)
0125デフォルトの名無しさん
垢版 |
2014/11/28(金) 10:58:23.40ID:HA42UZYd
ちなみに、俺は結構やりこんでるが、入力補完やワークフローみたいな
ものも作ってるよ。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

<p><input type="text" id="hogehoge" /><br />

<script type="text/javascript">// <![CDATA[
$(function() {
var hogehogeTags = [
"あいうえお",
"かきくけこ",
"さしすせそ",
"たちつてと",

・・・・・ 中略 ・・・・・

"漢字1",
"漢字2",
"漢字3"
];
$( "#hogehoge" ).autocomplete({
source: hogehogeTags
});
});
// ]]&gt;</script>

これはテキストボックスに入力補完をスプレッドシートから持ってくる奴だが、
こういうのだったら動く。
0127デフォルトの名無しさん
垢版 |
2014/11/28(金) 11:52:19.42ID:LBNEaAKa
>>126
function doGet() {
return HtmlService.createHtmlOutputFromFile('htmledit')
.setSandboxMode(HtmlService.SandboxMode.EMULATED);
}

とか、

function doGet() {
return HtmlService.createHtmlOutputFromFile('htmledit')
.setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

とか
0128デフォルトの名無しさん
垢版 |
2014/11/28(金) 12:01:22.01ID:dYLaj0CI
以前はEMULATEDがデフォだったが
最近はNATIVEがデフォに切り替わった
というところまでは読んだ

このページ見るとNATIVEが書き換えないみたいなんだけど

https://developers.google.com/apps-script/guides/html/restrictions
Rewritten code

In the EMULATED sandbox mode, Caja inspects and substantially rewrites all HTML
and JavaScript before the page loads.
This results in a substantial slowdown in loading times relative to the newer NATIVE mode.
Because code is rewritten, it also becomes difficult to debug.

In NATIVE mode, although comments are still stripped from client-side code,
the code is only rewritten if it contains variables or named functions at the top level,
or if it uses the typeof operator to refer to a variable directly.
The examples below show how to avoid code rewrites in NATIVE mode.

✘Don't — code will be rewritten ✓Do — code will not be rewritten in NATIVE mode
図は逆だよね
0129デフォルトの名無しさん
垢版 |
2014/11/28(金) 12:06:18.29ID:LBNEaAKa
>>128
まぁ、だからといって、どちらも制限があるのには違いないけれどね。
あくまでも、ドノーマルで実行するよりかは制限が緩いので、使えるかも
って感じ。

なるべくシンプルに構築するのがHTML Servicesの基本だね。でなけれ
ば、UiApp Servicesを使えって話になってくると思う。
0133デフォルトの名無しさん
垢版 |
2014/11/30(日) 13:51:09.63ID:Q44JDfrW
遅すぎて使い物にならんね
0134デフォルトの名無しさん
垢版 |
2014/11/30(日) 17:10:58.86ID:Q44JDfrW
spreadsheet を DB 代わりに使ってみたけど
排他処理もロックも何もしないと
データめちゃくちゃになるなω
0135デフォルトの名無しさん
垢版 |
2014/11/30(日) 17:14:32.64ID:Q44JDfrW
ということでメモ
https://developers.google.com/apps-script/reference/lock/lock
https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/
http://stackoverflow.com/questions/12808674/locking-script-when-accessing-spreadsheet-doesnot-work
http://stackoverflow.com/questions/16075446/how-to-protect-the-google-app-script-code-in-google-spreadsheet
http://ramblings.mcpher.com/Home/excelquirks/dbabstraction
0136デフォルトの名無しさん
垢版 |
2014/12/01(月) 06:51:47.55ID:GLoHGVkg
ロックかからんし
ScriptProperties が deprecated になってるし
なんなのこれ
無理して使うもんじゃないな
0137デフォルトの名無しさん
垢版 |
2014/12/01(月) 07:08:43.79ID:GLoHGVkg
lock中の処理で
SpreadsheetApp.flush();
入れたら解決した
なんか応答も速くなった希ガス
0138デフォルトの名無しさん
垢版 |
2014/12/01(月) 09:25:06.84ID:guOSxUv1
馬鹿には無理
0139デフォルトの名無しさん
垢版 |
2014/12/01(月) 10:12:28.09ID:ikZ1X/ON
(前文略)
1. 突然変わる仕様

今回のAdvent Calendar中にも大きな仕様変更があり、おもいっきり影響をウケました。
GAS以外のGoogle系サービスは裏側の仕様が変わるので変わることを意識しておかないと精神的に病んでしまいます。

例えば今回大きかったのは
今まで.gs

var dateString = Utilities.formatDate(new Date() , 'JST' , 'yyyy/MM/dd HH:mm:ss');
Logger.log(dateString);

という風に書くと「日本時間(JST GMT+9)の日付文字列」が取得できました
しかし仕様が変わりこのJST指定をしてもGMT+9の値が取得できなくなりました。
これから.gs

var dateString = Utilities.formatDate(new Date() , 'Asia/Tokyo' , 'yyyy/MM/dd HH:mm:ss');
Logger.log(dateString);

と書く必要があります。

これ以外にもちょこちょこと仕様変更があり、コードを直す必要があったりします。
どうすればいいの?

http://qiita.com/soundTricker/items/21d3a39222fb1edbce57
0141デフォルトの名無しさん
垢版 |
2014/12/01(月) 12:23:57.99ID:GrWyVyTu
publish した直後は反応が遅かったりアクセスエラーになるなぁ
数分待ってからアクセスるると比較的速いしエラーも減る
(それでも我慢できる速さってレベル)

GAS を保存するサーバーと公開されるサーバーが違ってたり
同期取ってたりしてる感じだな・・・
0142デフォルトの名無しさん
垢版 |
2014/12/02(火) 08:18:47.93ID:m/U+kAA0
>>139
そもそも、JST指定する方法が旧式で、おかしかったわけで。今回から
正しい取得方法に修正されたってだけの話。仕様変更が勝手に発生するのは
いつもの事だが、それについては指摘はオカシイ。

>>140
非推奨になってたって 随分前から非推奨になってるんだが・・・・
移行期間中だぞ。今は。インテリセンスの候補でも二重線引っ張ってあった
だろうが。今更何を。
0143デフォルトの名無しさん
垢版 |
2014/12/05(金) 08:40:33.92ID:uibbdYqE
>>133
遅くなる理由
https://developers.google.com/apps-script/guide_libraries
Warning: A script that uses a library will not run as quickly as it would
if all the code were contained within a single script project.
Although libraries can make development and maintenance more convenient,
you should avoid them in projects where speed is critical.
Because of this issue, libraries should not be used in add-ons.

https://developers.google.com/apps-script/best_practices#avoidLibraries
https://developers.google.com/apps-script/add-ons/
0146デフォルトの名無しさん
垢版 |
2014/12/05(金) 12:48:37.41ID:3N+Ki0BW
>>144
まぁ、例え効率の良い書き方をしたとしても、それでも全然ローカル
でやるのに比べたら、比べるまでもなく遅いけれどね。
0147デフォルトの名無しさん
垢版 |
2014/12/05(金) 17:28:33.29ID:X46M6Pii
プログラムは全くの素人なのですが、フォームに入力された内容をメールで送るスクリプトをネットからコピペしました。最初は上手くおくれたのですが、途中から
http://i.imgur.com/8hI4jzt.jpg
のようなエラーが出てメール送れなくなりました。解決策がわかりません。ご存知な方、教えて頂けますか?
0150デフォルトの名無しさん
垢版 |
2014/12/07(日) 18:52:37.92ID:uc0Y93wp
新しい Google スプレッドシート
[ツール] メニュー > [スクリプト マネージャ]

スクリプト マネージャが無いんですけど、どこへ行ったの?
0154デフォルトの名無しさん
垢版 |
2014/12/10(水) 13:50:01.10ID:evPa2cl4
状況が変わった

ログイン出来るようになったけど
ルートの画面で

Google Drive was unable to load your items. Please refresh to try again. (Dismiss)

って出て何も操作出来ない

どうみても輻輳です本当にありがとうございました
0155デフォルトの名無しさん
垢版 |
2014/12/12(金) 20:12:42.74ID:ZKEOL7uD
google plus apiもここで良いのかな?
こういう大量に画像があるページから画像をぶっこ抜こうと思ってjson取得したんだけどな、15枚しか画像リンクを教えてくれないんだわ
https://plus.google.com/109057690948151627836/posts/6Q6cv5KNYef#109057690948151627836/posts/6Q6cv5KNYef

これがjsonの抜粋
http://xxxxxxxxxxxx.net/_/86/20141212201047-0.txt

やり方分かる人いる?
0157デフォルトの名無しさん
垢版 |
2014/12/13(土) 10:37:05.12ID:LHF4FOqU
>>156
アクティビティーのnextTokenは送ってるが、画像にもnextToken送れるんか・・?
0158デフォルトの名無しさん
垢版 |
2014/12/16(火) 13:32:07.41ID:PuXxa6T9
尾骶骨
0159155
垢版 |
2014/12/20(土) 15:58:34.92ID:2lHjoIS9
自己解決した。スレ汚しスマソ
0160デフォルトの名無しさん
垢版 |
2014/12/21(日) 17:54:05.71ID:gQMH/TzB
トリガーをいくつか設定してみたけど
違うプロジェクトに同じ名前の関数があるとき
トリガーの一覧には関数名しか出て来ないので
どのプロジェクトの関数が呼ばれるのかあとで判らなくなるな
0169デフォルトの名無しさん
垢版 |
2015/01/12(月) 13:52:24.61ID:MUt+Twlt
Google Drive のゴミ箱に溜まってたファイルを
永久に削除
を選んで消したのに残り容量が増えないぬ
先週くらいまではゴミ箱空にしたら容量増えたのに
0170デフォルトの名無しさん
垢版 |
2015/01/14(水) 10:13:25.29ID:pWmctPUO
>>169
恐らくだが
どのフォルダにも属していない、検索の時だけ出てくるファイルがあるよ。消したつもりになってるだけでね。
0171デフォルトの名無しさん
垢版 |
2015/01/14(水) 13:03:30.08ID:EnBoJmyV
trash からも delete forever で確実に削除してたのに
さっきログインしたら trash にあった
改めて消したら容量増えた
ありがとう

Google Drive ってたまにバグるみたいだぬ
0172デフォルトの名無しさん
垢版 |
2015/01/20(火) 07:56:06.92ID:F6HHv4j5
勝手にアップデートされて以来
GoogleDriveは執事として無能な
時間泥棒に成り下がってしまった
0174デフォルトの名無しさん
垢版 |
2015/03/14(土) 19:02:02.06ID:EXR76peq
Siteで新規ページ作成で自動生成されるurl文字列をscriptで再現する方法はないでしょうか?

たとえば「試験-しけん-シケン」と入力すると自動では「shi-yan-shiken-shiken」というURLになるけど
このルールでスクリプトから新規ページ作成を行いたいと思っているのですが
0175デフォルトの名無しさん
垢版 |
2015/03/16(月) 02:46:33.19ID:1GyT2oWU
同じ名前でもう一つ作ってみ?
0176デフォルトの名無しさん
垢版 |
2015/03/18(水) 22:55:28.68ID:fCXDEV+f
GASで任意のURLを開くことはできますか?
スプレッドシート上でも別タブでもどちらでも構いません。
0178176
垢版 |
2015/03/20(金) 15:56:58.40ID:+pnIcR/c
やはりリンク作ったりするのが精一杯なんですね。
わかりました。
0179176
垢版 |
2015/03/20(金) 17:37:45.26ID:+pnIcR/c
HtmlService.createHtmlOutputにiframeタグを書いても
インラインフレームの中に何も表示されないのは仕様ですか?
0181176
垢版 |
2015/03/22(日) 21:40:15.35ID:Exm92v9O
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
を付けてみてもダメでした。
もちろんNATIVEもダメでしたし、本当にあきらめるしかなさそうですね。

ちなみに表示させようとしていたページのURLは以下です。
http://www.google.com/search?btnI=I%27m+Feeling+Lucky&;lr=lang_ja&ie=UTF-8&oe=UTF-8&q="+ss.getActiveCell().getValue()
0182デフォルトの名無しさん
垢版 |
2015/03/26(木) 11:07:18.75ID:r/Xr85WG
Googleドライブ上にある複数のxlsを読み込んで、指定した文字を検索するhtmlをドライブ上で共有したいのですが
この場合どうすればいいのでしょうか?script.google.comとかサッパリでした
ある程度の英語とjavascriptは出来るので「ココ嫁」みたいなリファレンス貼ってくれるだけでも助かります
0187デフォルトの名無しさん
垢版 |
2015/03/26(木) 20:07:09.55ID:xZ2N6kXB
>>186
xlsxの全文検索をしてみましたが、出来ました。
fullText containsオプションを使えば可能です。

ただし、たけのこという文字がセルに入ってる場合、「たけのこ」ではヒットしますが、「たけ」ではヒットしません。そういう仕様だそうです。以下に完成品をまとめておきましたので、参考にしてみてください。
http://goo. gl/coMk0P
0188182
垢版 |
2015/03/27(金) 00:58:25.79ID:DYcS+Siy
度々すみません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やったら検索は出来ました
0189デフォルトの名無しさん
垢版 |
2015/03/27(金) 08:27:15.70ID:XOU4xnaE
>>188
スクリプトはライブラリ化すれば使い回しが出来ます。
http://goo. gl/ExZZSb
0191デフォルトの名無しさん
垢版 |
2015/04/06(月) 19:06:09.55ID:Uo28IzYD
script.googleにてディレクトリに存在するファイル全て開いて検索するプロジェクトのgsファイルを作ってるんですが
コード.gsて一度に開けるファイルの数や容量の制限ありますか?
0192デフォルトの名無しさん
垢版 |
2015/04/07(火) 11:43:06.04ID:Dj35uwLZ
ちょっとした質問なんですけどDriveApp.getRootFolder()みたいに共有アイテムにある「textフォルダ」を取得する方法ってないですか?
0194デフォルトの名無しさん
垢版 |
2015/04/11(土) 21:16:39.83ID:yuSJQZvz
1.gmailの受信メールをチェック

2.特定タイトルのメールの送信者を抽出しリストアップ

3.別のリストとマッチングさせメール未送信者を特定

4.未送信者に注意メールを送信

GAS初心者なのですが
上記のようなシステムを構築したいと考えています。
1.2.4はGASとスプレッドシートを使えば簡単に実装できそうなのですが
3もGASやappsのみで構築可能でしょうか?
スプレッドシートのマッチングについて
少し調べて見ましたが、明確な回答は見つかりませんでした。
よろしくお願いします。
0195デフォルトの名無しさん
垢版 |
2015/04/13(月) 07:45:32.11ID:eHLkbahF
>>194
可能

普通にリニアサーチでメアドリストと1つづつイコールかどうか
確認するループを作ればいいだけ
0197デフォルトの名無しさん
垢版 |
2015/05/20(水) 20:15:39.64ID:L+8WGw0p
最近始めたんだけどこれmydriveにアップしたExcelを読み込む事は出来ないのかな
getDataAsString()でも文字化けしたのしか取得できないし
スプレッドシートに変換すりゃいいんだろうけどそのまま読み込む方法ないのかね
0200デフォルトの名無しさん
垢版 |
2015/05/21(木) 09:50:23.52ID:x9iUxaW9
エクセルはどこでも話題になるけどDriveApp.searchFiles()で一応文章検索はできるから
セルのstring情報はどっかに記録されてる
ただ引き出して扱えるかどうか知らん
0201デフォルトの名無しさん
垢版 |
2015/05/21(木) 10:56:25.53ID:ESp1pCeJ
馬鹿には無理
0205デフォルトの名無しさん
垢版 |
2015/05/27(水) 08:07:09.69ID:lvaBWQ33
>>204
君はGoogleのドキュメントがろくにメンテされてないこと知ってんの?
それと、GASで使うのにOAuthなんて使わないよw

JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに
関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え
ない発言だなw
0206デフォルトの名無しさん
垢版 |
2015/05/27(水) 11:08:24.77ID:fMt5EoRl
> それと、GASで使うのにOAuthなんて使わないよw
ひょ、標準APIとの違いも解らない奴がココに居るのか
ちょっとキミにはこのスレちょっと早い
0208デフォルトの名無しさん
垢版 |
2015/05/27(水) 15:16:08.57ID:jmeRjzK/
知らないから自演も満足に出来ないんだろうが
煽り方が下手だと思う
0209デフォルトの名無しさん
垢版 |
2015/05/27(水) 16:25:43.57ID:smOTLbR3
>>206-207
だから、使ってからほざけよ。

コード書いてみ?GAS内でDrive API使うコードをな。
実際に開発やってる奴に、釈迦に説法って言葉覚えておけよ三流。
0210デフォルトの名無しさん
垢版 |
2015/05/27(水) 16:29:32.25ID:smOTLbR3
>>204
それとお前。
OAuth1.0だから何?そんなもの自分で2.0の実装でも換装すりゃいいだけの
話だろww

馬鹿なの?それとも2.0のコードでも書けとか言ってるわけ?馬鹿には無理だ
から引っ込んでろ
0211デフォルトの名無しさん
垢版 |
2015/05/27(水) 20:42:22.92ID:iPQChm+t
なんか急にonEditのe.userにメールアドレスが入ってこなくなったんだが
同じ現象の人いる?
0212デフォルトの名無しさん
垢版 |
2015/05/28(木) 09:53:52.42ID:/8nOg4qQ
これで良くね
ttp://stackoverflow.com/questions/26702330/why-does-google-apps-script-return-a-url-rather-than-a-pdf-file-when-i-try-to-cr
0213デフォルトの名無しさん
垢版 |
2015/06/08(月) 08:54:21.97ID:0Vy1Z1yY
>>211
そんなのしょっちゅうあるぜ?
session.userなんてメアド取れなくなったりとかね。
Googleって馬鹿だからバグ採りもせずにデプロイしてやがるのでこういうことがGoogle Apps for Workでも起きていてもんだいになってる。
0214デフォルトの名無しさん
垢版 |
2015/06/08(月) 13:38:40.43ID:rJB8iCDI
Googleって独りよがりだよな
0215デフォルトの名無しさん
垢版 |
2015/06/11(木) 09:07:55.30ID:DJZgiAWM
書式設定を変えるようなスクリプトを作っても反映されないんだけど、
スプレッドシートの既知の問題?
例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても
折り返してくれない。
(スクリプト実行後、ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す)

function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('A:A');
range.setWrap(true);
}

この問題って、フォームから文字列が入力されても既に書式設定してあるセルで
同じ事が起きるんだけど、地味に困ってる。
0216デフォルトの名無しさん
垢版 |
2015/06/12(金) 10:07:42.64ID:7lwiQU6T
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!と表示されますが投稿されません。
どうしたら投稿できるようにできますか?
0217216
垢版 |
2015/06/12(金) 10:12:38.54ID:7lwiQU6T
>>216
動きました。すみません。
レスを投稿する


ニューススポーツなんでも実況