【MACRO】Google Apps Script 質問スレ【DRIVE】

1デフォルトの名無しさん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/

2デフォルトの名無しさん2014/06/29(日) 11:07:58.27ID:5HmND7Qc
■お役立ちリンク
gdata-python-client
ttps://code.google.com/p/gdata-python-client/
Google Documents List API v1 Developer's Guide: Protocol (古い)
ttps://developers.google.com/google-apps/documents-list/v1/developers_guide_python
ScriptDB
ttps://developers.google.com/apps-script/reference/script-db
ScrptDb
ttp://libro.tuyano.com/index3?id=921001

Using OAuth 2.0 to Access Google APIs
ttps://developers.google.com/accounts/docs/OAuth2
Using OAuth 2.0 for Login (OpenID Connect)
ttps://developers.google.com/accounts/docs/OAuth2Login

ドライブの認証と承認について
ttps://developers.google.com/drive/training/drive-apps/auth/about
OAuth 2.0 認証情報を取得して使用する
ttps://developers.google.com/drive/training/drive-apps/auth/credentials

3デフォルトの名無しさん2014/06/29(日) 11:08:27.65ID:5HmND7Qc
一見すごい乱暴な仕様なんだけど実用上は問題ないということなんだろうな
https://www.youtube.com/watch?v=lEVMu9KE6jk
https://www.youtube.com/watch?v=ezbH4IJynhU
http://www.scoop.it/t/gas

4デフォルトの名無しさん2014/06/29(日) 11:09:52.86ID:wFk5OUc5
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

5デフォルトの名無しさん2014/06/29(日) 11:18:48.90ID:wFk5OUc5
Google Drive APIをRuby on Railsから叩く方法
http://www.eisbahn.jp/yoichiro/2012/10/google-drive-api-ruby-on-rails.html

+関連スレ
Windows Azure プログラミング 総合スレ2
http://peace.2ch.net/test/read.cgi/tech/1359450980/

6デフォルトの名無しさん2014/06/29(日) 11:21:28.69ID:vvQOaiPq
クラウドAPIスレにすれば良かったのに

7デフォルトの名無しさん2014/06/29(日) 12:06:09.80ID:tO69Jiz2
あとで見るリスト
Google Apps Unscripted, March 14, 2014
https://www.youtube.com/watch?v=E1CzPtUKWkw
Google Drive SDK: Building Drive apps entirely on the cloud with Google Apps Script
https://www.youtube.com/watch?v=R71oo-5NmPE
Google I/O 2013 - Integrate Google Drive with Google Apps Script
https://www.youtube.com/watch?v=0HVJMIeb3aE
Google I/O 2012 - Storing Data in Google Apps Script
https://www.youtube.com/watch?v=8lJewIWVI5s
State of the Script 2013
https://www.youtube.com/watch?v=b0GkGlG6kQY
Apps Script Crash Course: ContentService
https://www.youtube.com/watch?v=JRGzVdliQOQ
Google I/O 2013 - Use Apps Script to Create Dynamic Google Forms
https://www.youtube.com/watch?v=38H7WpsTD0M

8デフォルトの名無しさん2014/06/29(日) 12:12:11.08ID:tO69Jiz2
Google I/O 2012 - Use What You Know: HTML and JavaScript in Apps Script
https://www.youtube.com/watch?v=tcl24asytos
Google Apps Unscripted - March 2013
https://www.youtube.com/watch?v=SKZmfgNesKs
Google I/O 2012 - OAuth 2.0 for Identity and Data Access
https://www.youtube.com/watch?v=YLHyeSuBspI

9デフォルトの名無しさん2014/06/29(日) 12:40:23.92ID:tO69Jiz2
Google Drive SDK: Writing your first Drive app in Python
https://www.youtube.com/watch?v=zJVCKvXtHtE

10デフォルトの名無しさん2014/06/29(日) 12:42:11.61ID:tO69Jiz2
Google Drive SDKのクイックスタートをやってみる for Python
http://everyday-01.blogspot.jp/2013/01/google-drive-sdkpython.html
pythonでGoogle Driveにファイル転送
http://good-morning-call.com/2013/01/28/python%E3%81%A7google-drive%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%BB%A2%E9%80%81/
PythonからGoogle Driveにフォルダを作成する方法
http://d.hatena.ne.jp/kaorumori/20120518/1338218268
GoogleDriveAPIでHTMLファイルを作成し、GoogleドライブでWebサイト公開してアルクマを追いかける
http://d.hatena.ne.jp/thinkAmi/20121218/1355779644
Google DriveAPIでのHTMLファイル作成、GAEでのOAuth認証とコールバック実装
http://d.hatena.ne.jp/thinkAmi/20121229/1356735544
Google Drive APIによるファイル管理 (1-5/5) javascript
http://libro.tuyano.com/index3?id=1166003
Google API Client for Python Documentation
http://api-python-client-doc.appspot.com/
GoogleDriveAPI for Python
https://developers.google.com/drive/quickstart-python
Download Client Libraries
https://developers.google.com/drive/downloads
Google Drive API
https://developers.google.com/drive/
BigQuery
https://developers.google.com/bigquery/what-is-bigquery
Google Cloud Datastore
https://developers.google.com/datastore/
Google Cloud Storage Overview
https://developers.google.com/storage/docs/json_api/
Google Maps Coordinate API
https://developers.google.com/coordinate/
Google Fonts Developer API
https://developers.google.com/fonts/docs/developer_api
Using OAuth 2.0 to Access Google APIs
https://developers.google.com/accounts/docs/OAuth2

11デフォルトの名無しさん2014/06/29(日) 12:45:33.92ID:tO69Jiz2
Google Cloud Datastore: A Fully Managed NoSQL Data Storage Service
https://www.youtube.com/watch?v=fQazhzcC-rg

12デフォルトの名無しさん2014/06/29(日) 12:52:51.76ID:tO69Jiz2
Google APIs Client for Python (includes for Google App Engine)
https://developers.google.com/api-client-library/python/

だぶってたらすまそ

13デフォルトの名無しさん2014/06/29(日) 14:13:30.73ID:tO69Jiz2
Google Caja
https://developers.google.com/caja/

Overview of Google Apps Script
https://developers.google.com/apps-script/overview
Tutorial: Leveraging Google App Engine services from scripts
https://developers.google.com/apps-script/articles/appengine?hl=ja
Properties Service
https://developers.google.com/apps-script/guides/properties

Google Apps Script : To store data on google Cloud Sorage
http://blog.knoldus.com/2013/01/19/google-apps-script-to-store-data-on-google-cloud-sorage/
Google Apps Script: How to store data on google cloud storage?
http://stackoverflow.com/questions/12744957/google-apps-script-how-to-store-data-on-google-cloud-storage
Google Apps ScriptのPrediction Serviceを使ってみた
http://qiita.com/ttyokoyama/items/1aac9078d34b0daf1d44
BigQuery API の利用 (1-5)
http://libro.tuyano.com/index3?id=901002

14デフォルトの名無しさん2014/06/29(日) 14:30:36.95ID:tO69Jiz2
この人の声は聴きとり易いな
Your First Script - Apps Script Tutorials
https://www.youtube.com/watch?v=Pgfbl_o9WvM

15デフォルトの名無しさん2014/06/29(日) 16:08:56.60ID:tO69Jiz2
https://developers.google.com/apps-script/overview
ここを見ながら最初のスクリプトを書いてみた

Google Drive 上であらかじめ spreadsheet を一つ作って出来たファイルの ID を調べておく
Google Drive の [Create] から [Script] を選択し [Blank Project]
([Script] が無いときは [Create] の一番下の [Connect more apps] を選んで
[検索] apps script で出て来る [Google Apps Script] をインストール)
Script Editor の画面になったら以下のソースをコピペして適当な名前を付けて保存

function createAndSendDocument() {
var sheetId = '上で調べたID';
var ss = SpreadsheetApp.openById(sheetId).getActiveSheet();
var docId = ss.getRange(1, 1, 2, 1);
Logger.log('docId: %s', docId.getValues()[1][0]);
var doc = null;
try{
doc = DocumentApp.openById(docId.getValues()[1][0]);
}catch(e){
doc = DocumentApp.create('_hello_world_');
docId.setValues([['docId'], [doc.getId()]]);
}
doc.getBody().appendParagraph('hello, ' + (new Date()).toISOString());
var url = doc.getUrl();
var subj = doc.getName();
doc.saveAndClose();
var email = Session.getActiveUser().getEmail();
var body = 'created: ' + url;
Logger.log('email: %s, subj: %s, url: %s, body: %s', email, subj, url, body);
GmailApp.sendEmail(email, subj, body);
}

保存出来たら [select function] で createAndSendDocument を選んで実行

16デフォルトの名無しさん2014/06/29(日) 16:28:54.93ID:tO69Jiz2
web で公開するには
とりあえず上のソースに次の関数を一つ追加しておいて
function doGet(e) {
createAndSendDocument();
return ContentService.createTextOutput(e && e.parameters.index ? e.parameters.index : '');
}
Script Editor で [Publish] -> [Deploy as web app...] を選択
ダイアログが出たら
Project Version: 適当な名前
(とりあえず [Save New Version] を押すとバージョン 1 が作られる)
Execute the app as: me (とりあえず自分だけに公開)
Who has access to the app: Only myself (とりあえず自分だけ ※)

※で Anyone を選んだときは Script 中で更新するファイルにあらかじめアクセス権の設定が別途必要

[your latest code] をクリックすると [***開発専用***の URL] が自動で開かれるので公開前のテストが出来る
[Deploy] を押すと [公開用の URL] が表示されるのでコピーして保存してあらためてブラウザでその URL にアクセス

さらに一度公開したものを更新するときはバージョン番号を上げる必要がある
具体的にはバージョン 2 以降は [Publish] -> [Deploy as web app..] を押す前に
Script Editor の [File] -> [Manage versions...] であらかじめ新しいバージョンを作る必要がある

17デフォルトの名無しさん2014/06/29(日) 17:48:16.55ID:5HmND7Qc
日記乙
参考になった

18デフォルトの名無しさん2014/06/29(日) 18:06:30.40ID:5HmND7Qc
Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita
http://qiita.com/kaiinui@github/items/dad6180f1910c6a4bfd5

Ruby - Railsが時代に合わなくなってきた - Qiita
http://qiita.com/kaiinui@github/items/2781219340d427543d08

19デフォルトの名無しさん2014/06/29(日) 18:51:46.06ID:5HmND7Qc
GDG All Hands: Google Apps Script with Arun Nagarajan
https://www.youtube.com/watch?v=l0CCj6ull7s

20デフォルトの名無しさん2014/06/30(月) 08:15:01.70ID:94hmBiki
https://developers.google.com/apps-script/quickstart/docs
Try it out / Publish 〜

(SPA)
AngularJSを使ったWebアプリのアーキテクチャ設計
http://qiita.com/zoetro/items/46d2a8b57f2645bb5033
.NET 開発者向け Single Page Application 入門
http://msdn.microsoft.com/ja-jp/magazine/dn605877.aspx
Single Page Application (SPA) を使ってみよう: MVC 4 新機能シリーズ
http://blogs.msdn.com/b/chack/archive/2012/02/28/single-page-application-spa-mvc-4.aspx
ASP.NET MVC 4 Beta で追加された Single Page Application を試す
http://shiba-yan.hatenablog.jp/entry/20120218/1329552642

21デフォルトの名無しさん2014/06/30(月) 08:30:44.90ID:94hmBiki
漏れもメモも貼っとく
DriveSDK/FlowManager.gs
https://github.com/entaq/GoogleAppsScript/blob/master/DriveSDK/FlowManager.gs
OAuth2 Two samples here -
- App Engine Python sample that shows Server Side flow.
- Entirely client side flow with "Sign in with Google+.
These are samples expected to run seperately. For the Server Side flow,
I use raw HTTP requests for illustration purposes only.
Please use libraries and proper verification process outlined here -
https://developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken
https://github.com/entaq/OAuth2Flows
https://github.com/entaq/OAuth2Flows/blob/master/ServerSide.py
https://github.com/entaq/OAuth2Flows/blob/master/ClientSide.html
Google I/O 2012 - OAuth 2.0 for Identity and Data Access
https://www.youtube.com/watch?v=YLHyeSuBspI

ドライブの認証と承認について
https://developers.google.com/drive/training/drive-apps/auth/about
OAuth 2.0 認証情報を取得して使用する
https://developers.google.com/drive/training/drive-apps/auth/credentials
Using OAuth 2.0 to Access Google APIs
https://developers.google.com/accounts/docs/OAuth2
Using OAuth 2.0 for Login (OpenID Connect)
https://developers.google.com/accounts/docs/OAuth2Login
Google Driveの認証情報
GoogleのドキュメントにあるRetrieving and Using OAuth 2.0 Credentialsのサンプルコードのコメントを見ると、
認証情報はjson形式に変換して格納しろと書いてあります。
認証情報のファイル入出力スクリプト
json形式の認証情報を受け取ってファイルに書き込む関数storeJsonCredential()と、
ファイルに保管された認証情報を返すreadJsonCredential()を作りました。
http://good-morning-call.com/2013/01/27/python%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%85%A5%E5%87%BA%E5%8A%9B/
http://good-morning-call.com/2013/01/28/python%E3%81%A7google-drive%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%BB%A2%E9%80%81/

22デフォルトの名無しさん2014/06/30(月) 08:33:02.08ID:94hmBiki
ム板的には結構重要情報かも
Google Drive SDK: Searching for files
https://www.youtube.com/watch?v=DOSvQmQK_HA

23デフォルトの名無しさん2014/06/30(月) 12:07:30.79ID:iAWFXjp6
あがってる情報が古い気がする

24デフォルトの名無しさん2014/06/30(月) 17:39:27.89ID:8wubZZrm
そうでもない。
ただし、資料が多過ぎると見る気を無くす。

>1 乙

25デフォルトの名無しさん2014/06/30(月) 21:52:39.36ID:Xi/T5ITo
質問です。新しく作ったメニューに対してアクセラレータキーを設定する事はできますか?

26デフォルトの名無しさん2014/07/01(火) 11:06:27.64ID:73ppV3Pt
2014-05-15 Deprecating ScriptDB and Domain Service in Apps Script
http://googleappsdeveloper.blogspot.jp/2014/05/deprecating-scriptdb-and-domain-service.html

Attention Apps Scripters: We are deprecating ScriptDB and the Domain service.

The Domain service is being replaced by the Admin SDK advanced service,
which offers a wider array of data and operations.

ScriptDB has no direct replacement, but the blog post and migration guide list some alternatives.
The ecosystem of cloud data storage options has really taken off,
and I think many of you will be better served by those technologies in the long run.
https://plus.google.com/app/basic/+EricKoleda/posts?cbp=19pxhkiqduurj&sview=25

27デフォルトの名無しさん2014/07/01(火) 22:21:16.08ID:Eepx6p70
>>25
アクセラレータキーとは?

28デフォルトの名無しさん2014/07/02(水) 14:10:02.95ID:2yT8qCgo
>>25
見つからんね
他のアプリは出来てるのあるから
やり方はあるんだろうけど

29デフォルトの名無しさん2014/07/02(水) 15:23:27.83ID:My5/zu3x
難しい質問には答えられません。

30デフォルトの名無しさん2014/07/02(水) 15:26:11.32ID:My5/zu3x
>>27
Ctrl + 'O'
で open とかじゃね?

キー入力を addEventListener して出来なくもないが、
メニューの欄にも項目名の横に Ctrl + 'O'
って出て来て欲しいというのが、 >>25 の求めてるものだと E.S.P.

31デフォルトの名無しさん2014/07/02(水) 21:37:25.05ID:bqKflTRz
25です。
スプレッドシートについて、自作したスクリプトをメニューに登録して使っていますが、その機能をキーボードで実行したかっただけです。
メニューのファイルにALT+Fでアクセスするような動きがありますが、そういう機能の実装はどうすればできますか?

32デフォルトの名無しさん2014/07/03(木) 00:21:32.67ID:DIfIjFzr
As @Arun says, this is not supported yet. See and star this issue.
https://code.google.com/p/google-apps-script-issues/issues/detail?id=306


Apps Script only exposes server side events.
Unfortunately, you cannot register client side events like keyboard strokes today.
Please log an issue in our issue tracker
https://code.google.com/p/google-apps-script-issues/issues/list

33デフォルトの名無しさん2014/07/03(木) 12:59:30.06ID:au2RNPcn
これGAEとかのGQLと同じでmax100件(最大でも1000件)までしかリスト表示されないんだな

34デフォルトの名無しさん2014/07/03(木) 17:48:45.28ID:0TQE6pDF
168 デフォルトの名無しさん [sage] 2014/07/03(木) 17:10:36.81 ID:/QLPOJJ3 Be:
Dartプログラミング言語をGoogleのApp Engineがサポート…ついにサーバ言語としても位置づけ
http://jp.techcrunch.com/2014/07/01/20140629googles-dart-programming-language-is-coming-to-the-server/

これでW3Cは無理が有る様に思うが、きっかけにはなりそう。

あまり使いたいと思わせる要素は少ないな。あるのは数の力かな。
多分この辺りの言語戦争がWebKit内で有って分裂したんじゃ無いだろうか。表面は違うが。

35デフォルトの名無しさん2014/07/04(金) 14:59:57.58ID:azKVS+/T
Google Drive SDK: Building Drive apps entirely on the cloud with Google Apps Script
https://www.youtube.com/watch?v=R71oo-5NmPE

デモの途中で予定外の行動に出てるけど
何をミスって登録出来なくなってるんだろ

36デフォルトの名無しさん2014/07/04(金) 16:44:57.20ID:YpaE6k7m
>>35

Eric Koleda

The law of demos struck during Arun's presentation,
but he handled it well and this episode is a great way
to get started writing Drive Apps in Apps Script.


Arun Nagarajan

The demo gods can be cruel.
But this time they just added in a minute or two of delay that I didn't excited expect :)


Danielle Donovan

Please help! I didn't realize that Zip and Send was a developer product
and now have multiple files locked up with this error message:
TypeError: Cannot call method "map" of undefined.
Shouldnt have tried this at 2 am!
Have a client waiting on my work product and it's all gone.

37デフォルトの名無しさん2014/07/05(土) 03:55:39.23ID:Q8yincZ0
Google Developers

When you see us troubleshooting live, that's how you know it's a live demo. :)

38デフォルトの名無しさん2014/07/06(日) 07:29:28.42ID:QhYHPyG+
フォルダーの階層どれくらいまで深く出来るんだろ
ファイル名の長さとかどうなんだろ
拡張子付のフォルダーが作れないって・・・

39デフォルトの名無しさん2014/07/06(日) 07:41:18.80ID:QhYHPyG+
あと同じフォルダに同じ名前でファイル作れてしまうのもな
ポリシーと言ってしまえばそれまでだが

40デフォルトの名無しさん2014/07/06(日) 12:22:09.28ID:R9ebM/zt
Trashに移動したフォルダに対して
それを親にするファイルをアップロードしても
エラーにならないのにファイルは作られてないな
問い合わせのトラフィック減らすために
一度取得したフォルダのidをキャッシュしてみたが
フォルダがTrashに入ってるかどうかを
結局毎回チェックしないといけないので
idをキャッシュにする意味が無いという

41デフォルトの名無しさん2014/07/06(日) 12:42:30.14ID:R9ebM/zt
親フォルダをTrashからrootに出したら
そこで初めて隠れてた子ファイルが表示されたな
見えないけど存在するファイルが出来る訳か

42デフォルトの名無しさん2014/07/06(日) 20:53:56.49ID:4Al3+AY7
Trashにあるフォルダの子ファイルを
新規作成ではなくて既存のと
同じidで上書きした場合だと
Trashの中でもそのファイルの
日時は更新されるな

43デフォルトの名無しさん2014/07/07(月) 12:56:20.56ID:BruQRsNT
日記は別の場所で書けよ

44デフォルトの名無しさん2014/07/21(月) 21:54:48.41ID:DpfIQ25M

45デフォルトの名無しさん2014/07/28(月) 12:36:18.28ID:bXhble1y
すみません質問です
cronを叩かせるだけの目的で書いたのですが、
予期しないエラーが頻発するようで確実な動作が見込めてません
解決方法はありますでしょうか

function myFunction(){ //時間主導型の登録トリガ どう設定してもエラーは出る
 UrlFetchApp.fetch("http://hoge.jp/fuga.php");
}

現状エラー回避のためにtry{}catch(e){;}を掛けてますが、根本的解決にはなりませんよね

46デフォルトの名無しさん2014/07/28(月) 13:17:20.65ID:Kd+N53fj
エラーの内容は?

47デフォルトの名無しさん2014/07/28(月) 13:44:16.58ID:bXhble1y
エラーレポートメールのエラーメッセージの内容でいいですかね?
 予期しないエラー: http://URL (行 2、ファイル「cron」)
エラー行はUrlFetchApp.fetchしている行です

正常にアクセスする時もあるので、何が原因なんだろうなぁと

48デフォルトの名無しさん2014/07/28(月) 14:42:04.13ID:+qczOS9S
eの内容は?

49デフォルトの名無しさん2014/07/28(月) 17:47:46.65ID:bXhble1y
「[タイムスタンプ] Exception: 予期しないエラー: [URL]」ですね
ログの出力とgetLogで書式は少し違いますが、内容はこれ以外には何も無いんです

50デフォルトの名無しさん2014/07/28(月) 21:04:08.04ID:6Q8fYjya
URLを他の所に変えても同じ結果?

51デフォルトの名無しさん2014/07/29(火) 00:08:14.75ID:ufPt6u02

52452014/07/29(火) 12:57:58.69ID:aIcowZOC
ご指導ありがとうございます解決しました
URLを別のドメインに変えると上手く行ったので、GASじゃなくサーバー側の問題のようです
初心者丸出しの質問、申し訳ないです;;

53デフォルトの名無しさん2014/08/01(金) 17:31:28.94ID:Mjd2jJg4
質問です
https://developers.google.com/drive/web/quickstart/quickstart-python?hl=ja
ここのpythonのサンプルでファイルを作るのは問題ないのですが
spreadsheetを作ったあとどうやってそれを編集すれば良いのか判りません

一方
https://code.google.com/p/gdata-python-client/
ここからGoogle Spreadsheets Data APIを使うと編集が出来ました

ただgdataは古いAPIなので使わない方が良いと書いてあるサイトもあるので
出来ればgdata-python-clientではなくgoogle-api-python-clientを使って
spreadsheetを読み書きしたいです
何かヒントをください

54デフォルトの名無しさん2014/08/01(金) 18:23:28.93ID:ST/kpJCg
スレ違いだとは思いますが、どこで質問したら良いかわかりませんので少しお付き合いください。
AppsSpredsheetにセルの値の変更や追加などをExcelやAccessのVBAから実行してローカルのファイルの内容を自動的に反映したいと思っています。
どこかいいスレや資料があれば教えてほしいのですが。。。。

55デフォルトの名無しさん2014/08/01(金) 20:17:44.98ID:Jzz96Zpk
excel の同期ならフォルダごと同期するだけで良い気がする

VBA で実行するなら javascript の API 叩けばなんとかなりそうだけど
面倒なだけでメリット無い気がする

56デフォルトの名無しさん2014/08/01(金) 21:41:47.70ID:ST/kpJCg
>>55
excelの値全部ではなくサマリー的なものをスプレットシートに書き出して出先でも簡単に確認できるようにしたいなって思ってたんです。
GmailAPIの使用例は見つけたんですけどもスプレッドシートはあまり需要がないのか見つけられず。。。
excelからならコピペでも出来てしまうのも確かなんですが。。。自動化もしてみたいとおもったわけなんです。
他の言語でのサンプルを見ながらも少し色々探してみます

57デフォルトの名無しさん2014/08/02(土) 02:03:33.10ID:DYbeSaoq
企業でGoogle Appsに接してる人間ならChromebookで出来る事が解る
個人アカを使ってGoogleサービスを日々使いこなしてる筈だとね
ただ、日本はMSと手を組んだメーカー連合がつよすぎてね
大手ITベンダーは全部Googleとは疎遠
掲示板はMSのステマなのか真性の情弱なのか書正論ばかり
こんな醜い国じゃGoogleも後回しにしたくなるかなって

SoftBankグループみたいな三流IT企業から買いたく無いんだよ
せめて他のリセラーにも売らせてくれ
てか直販で売りやがれ!

58デフォルトの名無しさん2014/08/04(月) 13:29:51.73ID:VkhvqJe+
>>53
Java / C# は gdata じゃない方の client API があるみたいね
https://developers.google.com/google-apps/spreadsheets/

59デフォルトの名無しさん2014/08/04(月) 13:37:15.25ID:VkhvqJe+

60デフォルトの名無しさん2014/08/04(月) 17:58:06.09ID:vzBGIwJJ
Sample for reading Google Drive spreadsheet cells with OAuth2
https://github.com/hnakamur/gae-oauth2client-spreadsheet

61532014/08/08(金) 09:15:38.39ID:gW33htdT
>>60
ありがとう
できました

だけど何で python の gdata の spreadsheets.client は
途中で開発投げだした見たな中途半端なのが何年も放置されてんだろ

62デフォルトの名無しさん2014/08/09(土) 06:05:40.91ID:pKDLnMOq
質問させてください
スプレッドを匿名ユーザと共有したいのですが、その匿名ユーザにスクリプトscriptを実行させることはできないのでしょうか?
スプレッドの共有はできてるのですが、匿名ユーザでスクリプトが動かなく、スクリプトエディタも開けません

63デフォルトの名無しさん2014/08/09(土) 06:12:07.92ID:l2WdSHx9
スクリプトを共有したいときはスプレッドシート内部にスクリプトを作るんじゃなくて
スプレッドシートとは独立したスクリプトのみをドライブに作れば良かったと思う

64デフォルトの名無しさん2014/08/09(土) 06:13:30.26ID:l2WdSHx9
あとスクリプトエディタで開くとかじゃなくて
スクリプト実行させるだけならスプレッドシート内のスクリプトでも問題ない
公開するときのアクセス権と公開対象を適切に選ぶ必要はあるけどね

65デフォルトの名無しさん2014/08/09(土) 06:15:41.26ID:l2WdSHx9
具体的にはスクリプトを公開するときの実行者を自分のアカウントにして公開対象を匿名許可にする
スプレッドシート自体は共有しなくてもこれでスクリプトからアクセスできる

66デフォルトの名無しさん2014/08/09(土) 06:35:55.20ID:Wx261KMx
自信満々に嘘を吐く

67デフォルトの名無しさん2014/08/09(土) 09:26:32.94ID:pKDLnMOq
スプレッドシートの共有は「リンクを知っている全員が編集できます。」になっています。
スプレッドシート内のスクリプトは「ウェブアプリケーションとして導入」で「自分として実行」、アクセスできるユーザは「全員(匿名含む)」です。

上記で試すと、自分で開いてる時はスクリプトは実行できますが、匿名ユーザーとして開いてる場合は実行できません。
実行するユーザを「ウェブアプリケーションにアクセスしているユーザ」に、アクセス出来るユーザを「全員」にしてもやはり同じです。
どうしてだろう…。

68デフォルトの名無しさん2014/08/09(土) 12:47:15.87ID:cMAC0zr6
スクリプトのログには何か残ってる?

69デフォルトの名無しさん2014/08/09(土) 15:45:25.40ID:pKDLnMOq
>>68
いまLogger.logを入れてみました。
自分で実行した場合はログ出ましたが、匿名ユーザーの場合は何も表示されないですね…。

70デフォルトの名無しさん2014/08/09(土) 17:06:56.77ID:l2WdSHx9
先にアカウントごとに実行できるAPI選んどくのは何だっけ?

71デフォルトの名無しさん2014/08/25(月) 16:19:31.66ID:nYq6eJdk
定期的にGMAILの新着メールをチェックして何らかの処理をするスタンドアロンスクリプトを複数動かす
って無駄ですか?ですよね?利用制限的によくないですよね?
新着メールをチェックする部分だけを別スクリプトとして切り出して共通化
とかできますか?どうすればいいですか

72デフォルトの名無しさん2014/08/25(月) 16:21:54.88ID:Hlfi2Pum
>>71
GMail APIを使う。

73デフォルトの名無しさん2014/09/05(金) 12:49:53.92ID:Y7p0ugKJ
いまスクリプトエディタ使える?

74デフォルトの名無しさん2014/09/05(金) 15:16:49.71ID:IWkncnuU
>73
なぜか使えない…
過去に作ったスクリプトを開こうとしたら、
画面上のメニューバーはグレーアウトしてるわ、
ソースも見れないわ、という状態…。
メンテ中なのかな?

75デフォルトの名無しさん2014/09/05(金) 15:52:16.17ID:JjYqHkIR
予告なしメンテって怖いなぁω

76デフォルトの名無しさん2014/09/05(金) 17:19:49.77ID:lPxaCJ2o
twitter上で、ドライブの言語設定を英語にすると入れましたという情報。メンテでもなんでもなくて、Googleがまたやらかしたようだ。
しかも日本語でだけ起きてるようだ。

77デフォルトの名無しさん2014/09/05(金) 17:44:02.38ID:O4jIFv7N
みんな使えてないんだ。いくらググっても情報出てこなかったから、自分だけかと思った。

78デフォルトの名無しさん2014/09/05(金) 17:47:04.00ID:O4jIFv7N
言語設定「アメリカ英語」にしたら正常動作した。

79デフォルトの名無しさん2014/09/05(金) 18:01:31.73ID:OHgvXglZ
ボタンクリック時に、getDownloadUrl()を利用して、
ドライブのファイルをローカルPCにダウンロードさせたいのですが、
何か良い方法はないでしょうか。

80デフォルトの名無しさん2014/09/06(土) 07:30:02.32ID:lwBPQO1J
あると思います。

81デフォルトの名無しさん2014/09/08(月) 14:22:48.45ID:paWs4Hy6
googleDriveApiで分からないことがあるんですけど、ここで質問してもいいですか?
該当スレが見当たらなくて‥.

82デフォルトの名無しさん2014/09/08(月) 17:20:31.13ID:PbRMq4gS
どうぞ

83デフォルトの名無しさん2014/09/09(火) 19:21:47.30ID:ZfTUX9zM
では質問されてください。
androidアプリを作っておりまして、googleDriveApiをアプリで使ってます。

アプリからフォルダの作成、ファイルのアップロード、ファイルのダウンロードを試してますが、1つ分からないことがあります。

アプリからドライブにアップロードしたファイルは、アプリからもダウンロードできるようですが、
アプリ以外(ブラウザやDriveアプリ)でアップロードしたファイルはアプリからは読み取れないようです。

これは何故でしょうか?

84デフォルトの名無しさん2014/10/03(金) 13:38:13.29ID:l1a/FbjN
先月まで使えてた DriveApp の GetFolderById が今月あたりから
「アクセスが拒否されました」
になったんですが、こういった情報はどこを探せばわかるんでしょうか?

85デフォルトの名無しさん2014/10/03(金) 13:40:00.84ID:lXIQAzKJ
へー

86デフォルトの名無しさん2014/10/03(金) 14:00:18.15ID:I4AMywYF
>>84
それつまり、そのフォルダへのアクセス権を君が失ったってことじゃないかな。

87デフォルトの名無しさん2014/10/03(金) 14:14:49.00ID:l1a/FbjN
>>86
もちろんアクセス権はありますよ。
hasNext とか、もともとアクセス拒否だったので使えなかった。
その範囲が広がった感じ。

88デフォルトの名無しさん2014/10/03(金) 14:51:37.02ID:lXIQAzKJ
アカウント凍結の前兆かも知れない

89デフォルトの名無しさん2014/10/07(火) 08:42:41.11ID:oJl/Y7yL
>>87
DocsListのほうは?

90デフォルトの名無しさん2014/10/07(火) 11:53:15.17ID:dYvjtFhe
>>89
こちらはアクセス拒否にはならないようです。
ただ、大分使える関数が違うみたい。
この線で直してみます。

Thanks!

91デフォルトの名無しさん2014/11/02(日) 12:51:15.25ID:DnfpgE4l
spreadsheetからcontactのフリガナって弄れないんですかね?

92デフォルトの名無しさん2014/11/02(日) 13:00:03.63ID:CjBmvnJw
いける

93デフォルトの名無しさん2014/11/02(日) 13:19:05.02ID:iFLhMcfI
ScriptDB みんな使ってるの?

94デフォルトの名無しさん2014/11/02(日) 16:39:28.49ID:nVDzouXs
使ってない
spreadsheet で間に合うので

95デフォルトの名無しさん2014/11/02(日) 17:24:39.28ID:/dK2F75C
>>92
どうやるんですか??
>>92

96デフォルトの名無しさん2014/11/03(月) 12:30:15.90ID:lU3ZnnO9
>>94
なるほど。。。どのくらいのデータ扱ってるんですか?
参考までに教えてください。

97デフォルトの名無しさん2014/11/03(月) 19:27:50.34ID:p3gGK/5S
GoogleDRIVEでゴミ箱を削除してくださいとポップアップが出るようになったのですが
スマホからもpcからもゴミ箱が表示されません。
ゴミ箱はどこに表示されるのでしょうか。
よろしくお願いします。

98デフォルトの名無しさん2014/11/03(月) 19:47:07.46ID:p3gGK/5S
解決しました

99デフォルトの名無しさん2014/11/07(金) 00:08:03.23ID:MQmGrs9M
GAEから使えるのがありがたい

100デフォルトの名無しさん2014/11/07(金) 17:42:40.98ID:qD5n5Xcy
>>93
もうそれ、サービス終わってるよ

101デフォルトの名無しさん2014/11/08(土) 11:59:45.01ID:UfYKgu7A
>>100
そうですか。。。。
MS-Accessみたいなことできるお手軽DB実現したかったのにちょっと残念です。DBやるならGAEとかしかないのかな。。。

102デフォルトの名無しさん2014/11/08(土) 16:15:22.81ID:qwvGzBPO
えっ

103デフォルトの名無しさん2014/11/10(月) 08:44:52.32ID:9rz69vME
>>101
DBやるなら、AWSのRDSやらGoogle Cloud SQL、レンタルサーバのDBサーバ
など有償のものを使うしか手立てはないですよ。ローカルのサーバをDDNSで
外からアクセス出来るようにして、GAからアクセスさせるってのも手ではありま
すがね。

104デフォルトの名無しさん2014/11/10(月) 11:43:50.35ID:GGFW6CYo
spreadsheetで間に合わないなら
GAEのDBを使うのが一番安上がり

105デフォルトの名無しさん2014/11/10(月) 15:50:15.20ID:N/uHWaPu
2014-10-06 Angularが嫌い
http://mizchi.hatenablog.com/entry/2014/10/06/162103

AngularJSは覚えることが多過ぎてあきらめた。mustucheテンプレートはイケテル。
=>
vue.jsおし。
MEANはnpmエコシステム体験ツアーに便利。(そのまま実用に突き進むのはゴールデンハンマーの罠)



Vue.jsか日本語書籍をはじめノウハウの多いbackbone.jsがおすすめ。
Angular.jsは不自然なところが多い。JQueryのように自然に使えない。数年後にはEJB2のように滅んでいる感じ。



Angularそっちのけで、Vue.jsについて所感 2014-02-14
http://havelog.ayumusato.com/develop/javascript/e587-vuejs_impressions.html
2014-06-26 5分でわかるVue.jsと、jQueryで頑張ってはいけない理由
http://www.infiniteloop.co.jp/blog/2014/06/5min_vuejs/
Vue.js概要? 2014/04/25 - 2014/11/09
http://qiita.com/asip2k25/items/bd4bdccd5201d542953c
Vue.js v0.11の変更点(予定)まとめ Oct 7th, 2014
http://blog.koba04.com/post/2014/10/07/vue-js-v011-changes/
Vue.js
http://vuejs.org/

どこでも活躍できるテンプレートエンジン「Mustache」
http://blog.mach3.jp/2010/10/05/mustache-template-engine.html
2012-12-09 テンプレートエンジンmustacheを使ってみる
http://d.hatena.ne.jp/Kazuhira/20121209/1355042467
mustache
http://mustache.github.io/

106デフォルトの名無しさん2014/11/10(月) 15:52:03.91ID:N/uHWaPu
2014-02-13 軽量でパワフルなデータバインディングMVVM, vue.jsで遊んでみた
http://mizchi.hatenablog.com/entry/2014/02/13/153742

107デフォルトの名無しさん2014/11/10(月) 16:49:41.10ID:N/uHWaPu

108デフォルトの名無しさん2014/11/10(月) 19:08:51.61ID:aSJ0dFtw

109デフォルトの名無しさん2014/11/10(月) 19:40:20.32ID:3cY12FBq
>>104
spreadsheetにsql発行することってできない?

110デフォルトの名無しさん2014/11/11(火) 08:57:46.26ID:GakEMCkA
>>109
QUERY関数

111デフォルトの名無しさん2014/11/19(水) 16:17:29.20ID:JZ2oYyd9
ライブラリ作って公開したけど
product ID が判り難いというか
import (resource) 管理が面倒臭い感じがする

112デフォルトの名無しさん2014/11/24(月) 10:56:25.69ID:LXRxquBl
Application Launcher for Drive (by Google)
この拡張機能が勝手にインストールされたぞ。

Web上のGoogle Driveからファイルをローカルアプリケーションで直接開けるらしいが、
何も機能しないし、そもそも右クリックメニューの中にローカルアプリは何も表示されない。

全く意味ねー

113デフォルトの名無しさん2014/11/24(月) 11:05:35.34ID:LXRxquBl
うゎ誤爆

114デフォルトの名無しさん2014/11/24(月) 11:07:33.14ID:I/tlYyaD
うゎ誤爆

115デフォルトの名無しさん2014/11/24(月) 11:16:24.85ID:JmS/vGuj

116デフォルトの名無しさん2014/11/24(月) 12:38:47.81ID:JyotAVq+
書いたプログラムを Google Drive で同期したフォルダから
ローカルPCで開いてもプログラムがバックアップ出来てる訳じゃないんだね

117デフォルトの名無しさん2014/11/27(木) 09:13:58.26ID:oxY/sHU5
Google Apps Script で出力した HTML の中で
AngularJS 使おうとしたら
1.3 全く動作しない
1.2 一部動くがほとんどはまともに動作しない
使えねー

118デフォルトの名無しさん2014/11/27(木) 09:21:12.55ID:tn51YXgS
>>117
俺はjQueryを使ってるが、使えるコードと使えないコードがあるので、それを
うまく回避しながらやるのが腕の見せどころですよ。

119デフォルトの名無しさん2014/11/27(木) 09:31:50.08ID:oxY/sHU5
CryptoJS も一部動作しない
AES 使えねー プンプン

120デフォルトの名無しさん2014/11/27(木) 12:53:30.42ID:vSILU7Ix
>>118
そういうのが楽しいと思っていた時期が私にもありました

121デフォルトの名無しさん2014/11/27(木) 13:00:02.51ID:vSILU7Ix
>>117
vue.js使え

122デフォルトの名無しさん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が)

123デフォルトの名無しさん2014/11/28(金) 10:46:46.51ID:2Y9sS9bf
>>117
AppsScriptはcaja経由でHTML出力されるので
elementのidが全部置き換えられて死ぬみたい

>>119
CryptoJSは使えてるよ

124デフォルトの名無しさん2014/11/28(金) 10:51:53.89ID:2Y9sS9bf
>>122
たぶん原因は>>123と同じだと思う

125デフォルトの名無しさん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>

これはテキストボックスに入力補完をスプレッドシートから持ってくる奴だが、
こういうのだったら動く。

126デフォルトの名無しさん2014/11/28(金) 11:22:06.13ID:BXi6AyWe
Caja の書き換え抑制ってどうやるんだっけ?

127デフォルトの名無しさん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);
}

とか

128デフォルトの名無しさん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
図は逆だよね

129デフォルトの名無しさん2014/11/28(金) 12:06:18.29ID:LBNEaAKa
>>128
まぁ、だからといって、どちらも制限があるのには違いないけれどね。
あくまでも、ドノーマルで実行するよりかは制限が緩いので、使えるかも
って感じ。

なるべくシンプルに構築するのがHTML Servicesの基本だね。でなけれ
ば、UiApp Servicesを使えって話になってくると思う。

130デフォルトの名無しさん2014/11/28(金) 12:53:38.59ID:dYLaj0CI

131デフォルトの名無しさん2014/11/28(金) 12:58:24.68ID:dYLaj0CI

132デフォルトの名無しさん2014/11/28(金) 18:13:04.21ID:QRvl6r74
GoogleDrive を web server にしたった

http://melpon.org/wandbox/permlink/eXrkFb2pv4EjHtSR

133デフォルトの名無しさん2014/11/30(日) 13:51:09.63ID:Q44JDfrW
遅すぎて使い物にならんね

134デフォルトの名無しさん2014/11/30(日) 17:10:58.86ID:Q44JDfrW
spreadsheet を DB 代わりに使ってみたけど
排他処理もロックも何もしないと
データめちゃくちゃになるなω

135デフォルトの名無しさん2014/11/30(日) 17:14:32.64ID:Q44JDfrW

136デフォルトの名無しさん2014/12/01(月) 06:51:47.55ID:GLoHGVkg
ロックかからんし
ScriptProperties が deprecated になってるし
なんなのこれ
無理して使うもんじゃないな

137デフォルトの名無しさん2014/12/01(月) 07:08:43.79ID:GLoHGVkg
lock中の処理で
SpreadsheetApp.flush();
入れたら解決した
なんか応答も速くなった希ガス

138デフォルトの名無しさん2014/12/01(月) 09:25:06.84ID:guOSxUv1
馬鹿には無理

139デフォルトの名無しさん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

140デフォルトの名無しさん2014/12/01(月) 10:34:33.93ID:ikZ1X/ON
GoogleAppsScriptのScriptPropertiesが非推奨になっていた
http://sugi.minibird.jp/gas/scriptproperties/

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

GAS を保存するサーバーと公開されるサーバーが違ってたり
同期取ってたりしてる感じだな・・・

142デフォルトの名無しさん2014/12/02(火) 08:18:47.93ID:m/U+kAA0
>>139
そもそも、JST指定する方法が旧式で、おかしかったわけで。今回から
正しい取得方法に修正されたってだけの話。仕様変更が勝手に発生するのは
いつもの事だが、それについては指摘はオカシイ。

>>140
非推奨になってたって 随分前から非推奨になってるんだが・・・・
移行期間中だぞ。今は。インテリセンスの候補でも二重線引っ張ってあった
だろうが。今更何を。

143デフォルトの名無しさん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/

144デフォルトの名無しさん2014/12/05(金) 09:24:04.62ID:NyP973bT
要するに結局使えねーってことじゃね

145デフォルトの名無しさん2014/12/05(金) 12:21:33.66ID:S74tDLHo
パフォーマンスの良いGASの書き方
http://www.slideshare.net/soundTricker/gas-best-practice
(このおっさんによれば70倍くらい簡単に速度変わるそうです)

146デフォルトの名無しさん2014/12/05(金) 12:48:37.41ID:3N+Ki0BW
>>144
まぁ、例え効率の良い書き方をしたとしても、それでも全然ローカル
でやるのに比べたら、比べるまでもなく遅いけれどね。

147デフォルトの名無しさん2014/12/05(金) 17:28:33.29ID:X46M6Pii
プログラムは全くの素人なのですが、フォームに入力された内容をメールで送るスクリプトをネットからコピペしました。最初は上手くおくれたのですが、途中から
http://i.imgur.com/8hI4jzt.jpg
のようなエラーが出てメール送れなくなりました。解決策がわかりません。ご存知な方、教えて頂けますか?

148デフォルトの名無しさん2014/12/06(土) 12:20:43.07ID:cu1CMwBP
Cacheが最大250文字のキーで各キー毎に100KBで最大6時間保持可能というところまでは読めたのですが
KeyValueのペアは最大何個まで作れるのでしょうか?
https://developers.google.com/apps-script/reference/cache/

149デフォルトの名無しさん2014/12/06(土) 15:41:58.87ID:7IWME+c9
MailAppとGmailAppはどういうときに使い分けますか

150デフォルトの名無しさん2014/12/07(日) 18:52:37.92ID:uc0Y93wp
新しい Google スプレッドシート
[ツール] メニュー > [スクリプト マネージャ]

スクリプト マネージャが無いんですけど、どこへ行ったの?

151デフォルトの名無しさん2014/12/08(月) 10:27:16.23ID:eZuxZoZp
learn more じゃなくて dismiss してひどいめにあった
https://support.google.com/docs/answer/6082736?p=old_sheets_migrate&rd=1

152デフォルトの名無しさん2014/12/10(水) 12:32:16.98ID:2OX9Sm8y
Internal Server Error

Error 500

わろた
あかんやろこれ

153デフォルトの名無しさん2014/12/10(水) 12:56:29.75ID:v5e5mm45
>>152
何回かリトライするといける

154デフォルトの名無しさん2014/12/10(水) 13:50:01.10ID:evPa2cl4
状況が変わった

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

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

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

どうみても輻輳です本当にありがとうございました

155デフォルトの名無しさん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

やり方分かる人いる?

156デフォルトの名無しさん2014/12/13(土) 06:19:49.76ID:KcZztYF+
nextToken送ってるかい

157デフォルトの名無しさん2014/12/13(土) 10:37:05.12ID:LHF4FOqU
>>156
アクティビティーのnextTokenは送ってるが、画像にもnextToken送れるんか・・?

158デフォルトの名無しさん2014/12/16(火) 13:32:07.41ID:PuXxa6T9
尾骶骨

1591552014/12/20(土) 15:58:34.92ID:2lHjoIS9
自己解決した。スレ汚しスマソ

160デフォルトの名無しさん2014/12/21(日) 17:54:05.71ID:gQMH/TzB
トリガーをいくつか設定してみたけど
違うプロジェクトに同じ名前の関数があるとき
トリガーの一覧には関数名しか出て来ないので
どのプロジェクトの関数が呼ばれるのかあとで判らなくなるな

161デフォルトの名無しさん2014/12/22(月) 04:11:59.65ID:bPTJ7mQh
myFunction とか doGet とか言う名前のトリガーがいっぱいなんですね判ります

162デフォルトの名無しさん2014/12/22(月) 07:19:01.01ID:lHFqZpWk
>>161
周りから頭悪いって言われてない?

163デフォルトの名無しさん2014/12/22(月) 08:16:40.37ID:1JxRKZUV
>>161
頭の悪いレスですね

164デフォルトの名無しさん2014/12/22(月) 10:30:02.86ID:Kj8Ds363
うちはtestDoGet()って名前のトリガーが多いな

165デフォルトの名無しさん2015/01/07(水) 08:21:41.41ID:7s8hjn62

166デフォルトの名無しさん2015/01/07(水) 08:55:32.09ID:7s8hjn62

167デフォルトの名無しさん2015/01/07(水) 10:57:08.64ID:aspvvccd
>>165
>>166
消え失せろカス。

168デフォルトの名無しさん2015/01/07(水) 12:21:43.55ID:HwRBQ0K9
いまどき2ちゃんにアフィ貼っても件数稼げないのにようやるわ

169デフォルトの名無しさん2015/01/12(月) 13:52:24.61ID:MUt+Twlt
Google Drive のゴミ箱に溜まってたファイルを
永久に削除
を選んで消したのに残り容量が増えないぬ
先週くらいまではゴミ箱空にしたら容量増えたのに

170デフォルトの名無しさん2015/01/14(水) 10:13:25.29ID:pWmctPUO
>>169
恐らくだが
どのフォルダにも属していない、検索の時だけ出てくるファイルがあるよ。消したつもりになってるだけでね。

171デフォルトの名無しさん2015/01/14(水) 13:03:30.08ID:EnBoJmyV
trash からも delete forever で確実に削除してたのに
さっきログインしたら trash にあった
改めて消したら容量増えた
ありがとう

Google Drive ってたまにバグるみたいだぬ

172デフォルトの名無しさん2015/01/20(火) 07:56:06.92ID:F6HHv4j5
勝手にアップデートされて以来
GoogleDriveは執事として無能な
時間泥棒に成り下がってしまった

173デフォルトの名無しさん2015/03/06(金) 13:27:50.63ID:BXX0fucD

174デフォルトの名無しさん2015/03/14(土) 19:02:02.06ID:EXR76peq
Siteで新規ページ作成で自動生成されるurl文字列をscriptで再現する方法はないでしょうか?

たとえば「試験-しけん-シケン」と入力すると自動では「shi-yan-shiken-shiken」というURLになるけど
このルールでスクリプトから新規ページ作成を行いたいと思っているのですが

175デフォルトの名無しさん2015/03/16(月) 02:46:33.19ID:1GyT2oWU
同じ名前でもう一つ作ってみ?

176デフォルトの名無しさん2015/03/18(水) 22:55:28.68ID:fCXDEV+f
GASで任意のURLを開くことはできますか?
スプレッドシート上でも別タブでもどちらでも構いません。

177デフォルトの名無しさん2015/03/19(木) 21:40:48.17ID:htgmHUmd
>>176
自動的に開くのは無理
ダイアログ出してクリックさせて開くのはhtmlserviceで実現できる。

1781762015/03/20(金) 15:56:58.40ID:+pnIcR/c
やはりリンク作ったりするのが精一杯なんですね。
わかりました。

1791762015/03/20(金) 17:37:45.26ID:+pnIcR/c
HtmlService.createHtmlOutputにiframeタグを書いても
インラインフレームの中に何も表示されないのは仕様ですか?

180デフォルトの名無しさん2015/03/22(日) 13:09:15.36ID:rj7656VH
>>179
GAS上ではiframeタグは使用禁止ですよ。
sandboxmode.iframeは使えますがね

1811762015/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()

182デフォルトの名無しさん2015/03/26(木) 11:07:18.75ID:r/Xr85WG
Googleドライブ上にある複数のxlsを読み込んで、指定した文字を検索するhtmlをドライブ上で共有したいのですが
この場合どうすればいいのでしょうか?script.google.comとかサッパリでした
ある程度の英語とjavascriptは出来るので「ココ嫁」みたいなリファレンス貼ってくれるだけでも助かります

183デフォルトの名無しさん2015/03/26(木) 13:13:42.53ID:XgHUlE+o
>>182
HTML ServiceとDriveApp

そして、siteにそのウェブアプリケーションを配置。
これで出来る。

184デフォルトの名無しさん2015/03/26(木) 13:16:41.94ID:XgHUlE+o
>>182
あと、手前味噌で申し訳ないが、色々作ってる
http://eye4brain.sakura .ne.jp/

185デフォルトの名無しさん2015/03/26(木) 15:18:18.76ID:SuVdMCRs
xls読めるの?

186デフォルトの名無しさん2015/03/26(木) 18:55:43.03ID:r/Xr85WG
>>183>>184
ありがとうございます、スクリプト参考にしてみます

187デフォルトの名無しさん2015/03/26(木) 20:07:09.55ID:xZ2N6kXB
>>186
xlsxの全文検索をしてみましたが、出来ました。
fullText containsオプションを使えば可能です。

ただし、たけのこという文字がセルに入ってる場合、「たけのこ」ではヒットしますが、「たけ」ではヒットしません。そういう仕様だそうです。以下に完成品をまとめておきましたので、参考にしてみてください。
http://goo. gl/coMk0P

1881822015/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やったら検索は出来ました

189デフォルトの名無しさん2015/03/27(金) 08:27:15.70ID:XOU4xnaE
>>188
スクリプトはライブラリ化すれば使い回しが出来ます。
http://goo. gl/ExZZSb

190デフォルトの名無しさん2015/03/29(日) 15:09:18.54ID:Kc5qzo13
>>189
できました
毎度毎度ありがとうございます!

191デフォルトの名無しさん2015/04/06(月) 19:06:09.55ID:Uo28IzYD
script.googleにてディレクトリに存在するファイル全て開いて検索するプロジェクトのgsファイルを作ってるんですが
コード.gsて一度に開けるファイルの数や容量の制限ありますか?

192デフォルトの名無しさん2015/04/07(火) 11:43:06.04ID:Dj35uwLZ
ちょっとした質問なんですけどDriveApp.getRootFolder()みたいに共有アイテムにある「textフォルダ」を取得する方法ってないですか?

193デフォルトの名無しさん2015/04/09(木) 18:24:15.60ID:Rhj0QTuK
こっちで聴いてみては?
http://kanae.2ch.net/test/read.cgi/php/1398600864/

194デフォルトの名無しさん2015/04/11(土) 21:16:39.83ID:yuSJQZvz
1.gmailの受信メールをチェック

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

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

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

GAS初心者なのですが
上記のようなシステムを構築したいと考えています。
1.2.4はGASとスプレッドシートを使えば簡単に実装できそうなのですが
3もGASやappsのみで構築可能でしょうか?
スプレッドシートのマッチングについて
少し調べて見ましたが、明確な回答は見つかりませんでした。
よろしくお願いします。

195デフォルトの名無しさん2015/04/13(月) 07:45:32.11ID:eHLkbahF
>>194
可能

普通にリニアサーチでメアドリストと1つづつイコールかどうか
確認するループを作ればいいだけ

196デフォルトの名無しさん2015/04/14(火) 08:06:25.22ID:VGcTHgGl
>>195
ありがとうございます!

197デフォルトの名無しさん2015/05/20(水) 20:15:39.64ID:L+8WGw0p
最近始めたんだけどこれmydriveにアップしたExcelを読み込む事は出来ないのかな
getDataAsString()でも文字化けしたのしか取得できないし
スプレッドシートに変換すりゃいいんだろうけどそのまま読み込む方法ないのかね

198デフォルトの名無しさん2015/05/21(木) 08:22:41.16ID:nwV8enKl
>>197
だったら、文字コードでも指定すればいいんじゃねぇの

199デフォルトの名無しさん2015/05/21(木) 08:29:47.62ID:x9iUxaW9
>>198
Excelは文字コード以前に形式違うからstringで取得できない

200デフォルトの名無しさん2015/05/21(木) 09:50:23.52ID:x9iUxaW9
エクセルはどこでも話題になるけどDriveApp.searchFiles()で一応文章検索はできるから
セルのstring情報はどっかに記録されてる
ただ引き出して扱えるかどうか知らん

201デフォルトの名無しさん2015/05/21(木) 10:56:25.53ID:ESp1pCeJ
馬鹿には無理

202デフォルトの名無しさん2015/05/21(木) 13:26:54.06ID:RCwHiUWn
最高にキモいな

203デフォルトの名無しさん2015/05/22(金) 12:42:30.36ID:jHm+8nxR

204デフォルトの名無しさん2015/05/23(土) 21:40:53.24ID:P22nVuYt
>>203
1年前のなんて古くて使いモンにならないってのがよくわかるな
oauth 1.0ってアンタ

205デフォルトの名無しさん2015/05/27(水) 08:07:09.69ID:lvaBWQ33
>>204
君はGoogleのドキュメントがろくにメンテされてないこと知ってんの?
それと、GASで使うのにOAuthなんて使わないよw

JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに
関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え
ない発言だなw

206デフォルトの名無しさん2015/05/27(水) 11:08:24.77ID:fMt5EoRl
> それと、GASで使うのにOAuthなんて使わないよw
ひょ、標準APIとの違いも解らない奴がココに居るのか
ちょっとキミにはこのスレちょっと早い

207デフォルトの名無しさん2015/05/27(水) 14:12:37.86ID:GScIfku9
煽るだけで具体例のない言葉は何の役にも立たねって
ばっちゃが言ってた

208デフォルトの名無しさん2015/05/27(水) 15:16:08.57ID:jmeRjzK/
知らないから自演も満足に出来ないんだろうが
煽り方が下手だと思う

209デフォルトの名無しさん2015/05/27(水) 16:25:43.57ID:smOTLbR3
>>206-207
だから、使ってからほざけよ。

コード書いてみ?GAS内でDrive API使うコードをな。
実際に開発やってる奴に、釈迦に説法って言葉覚えておけよ三流。

210デフォルトの名無しさん2015/05/27(水) 16:29:32.25ID:smOTLbR3
>>204
それとお前。
OAuth1.0だから何?そんなもの自分で2.0の実装でも換装すりゃいいだけの
話だろww

馬鹿なの?それとも2.0のコードでも書けとか言ってるわけ?馬鹿には無理だ
から引っ込んでろ

211デフォルトの名無しさん2015/05/27(水) 20:42:22.92ID:iPQChm+t
なんか急にonEditのe.userにメールアドレスが入ってこなくなったんだが
同じ現象の人いる?

212デフォルトの名無しさん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

213デフォルトの名無しさん2015/06/08(月) 08:54:21.97ID:0Vy1Z1yY
>>211
そんなのしょっちゅうあるぜ?
session.userなんてメアド取れなくなったりとかね。
Googleって馬鹿だからバグ採りもせずにデプロイしてやがるのでこういうことがGoogle Apps for Workでも起きていてもんだいになってる。

214デフォルトの名無しさん2015/06/08(月) 13:38:40.43ID:rJB8iCDI
Googleって独りよがりだよな

215デフォルトの名無しさん2015/06/11(木) 09:07:55.30ID:DJZgiAWM
書式設定を変えるようなスクリプトを作っても反映されないんだけど、
スプレッドシートの既知の問題?
例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても
折り返してくれない。
(スクリプト実行後、ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す)

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

この問題って、フォームから文字列が入力されても既に書式設定してあるセルで
同じ事が起きるんだけど、地味に困ってる。

216デフォルトの名無しさん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!と表示されますが投稿されません。
どうしたら投稿できるようにできますか?

2172162015/06/12(金) 10:12:38.54ID:7lwiQU6T
>>216
動きました。すみません。

218デフォルトの名無しさん2015/06/12(金) 16:05:55.82ID:qp6MkQCv
どういたしまして

219デフォルトの名無しさん2015/06/12(金) 17:28:28.59ID:7lwiQU6T
atomのlinkのhrefを取得したいのですがどうすればいいのでしょうか

function kochiRSS() {

var sheet = SpreadsheetApp.getActiveSheet();

var row = 1;

var feedURL = 'http://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('http://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);
}

220デフォルトの名無しさん2015/06/12(金) 18:11:48.05ID:qp6MkQCv
.getAttribute('href').getValue();

2212192015/06/12(金) 20:37:23.23ID:RT2PlkdQ
220
できましたどうもありがとうございます。

222デフォルトの名無しさん2015/06/13(土) 03:16:47.88ID:NUKk6CPY
どういたしまして

2232192015/06/13(土) 08:02:49.41ID:YFXshuK4
たびたびすみません。
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');
では取得できません。
どういう書き方にすれば取得できるようになるのでしょうか?

224デフォルトの名無しさん2015/06/13(土) 08:38:19.04ID:NUKk6CPY
馬鹿には無理

225デフォルトの名無しさん2015/06/13(土) 20:19:34.38ID:ZKnt+LAz
なんだこいつ

226デフォルトの名無しさん2015/06/14(日) 06:25:18.68ID:Gz1SNEoH
馬鹿には(回答は)無理

227デフォルトの名無しさん2015/06/14(日) 06:41:51.88ID:l6qAkUnh
一部変な奴もいるけど気にせずに馬鹿はどんどん質問してくださいな

228デフォルトの名無しさん2015/06/15(月) 13:48:50.97ID:6FCFdlNB
もっとやさしくしてください

229デフォルトの名無しさん2015/06/15(月) 20:34:44.01ID:TKCLtNo1
正直、DOM系の話題はなしにしたいものだ
DOMの話題ってjsの使い方一辺倒になっちまうから
GASそのものの本質を追究する姿勢が培われなくなってしまう

230デフォルトの名無しさん2015/06/15(月) 20:57:28.70ID:vJyBnBQX
GASはハウツー的な日本語ドキュメントが少ないから仕方ないかと
誰かその辺りをまとめてくれると(俺も)助かるんだがなー…(チラッチラッ

231デフォルトの名無しさん2015/06/15(月) 23:47:37.55ID:YPgI+YQd
>>223
>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)

2322232015/06/17(水) 05:49:31.92ID:pjaGN1aW
ありがとうございます。
rdf:aboutのようなのは名前空間というみたいで
XmlService.getNamespaceを指定すると使えるようです。
詳しくはこちらに載っていました。
https://msdn.microsoft.com/ja-jp/library/aa468565.aspx

233デフォルトの名無しさん2015/06/17(水) 14:14:39.78ID:T4rbUCsj
いやここはGASのスレだしw
XMLの基本を鼻高々に解説されても

234デフォルトの名無しさん2015/06/17(水) 16:12:56.82ID:7KhQ6AFD
>>233
わかればよろしい

235デフォルトの名無しさん2015/06/30(火) 15:54:55.56ID:jfSOFpG/
google apps script のウェブアプリケーションの公開するとき
指定したグーグルアカウントだけに利用させるって出来ないんですかい?
共有でそういうのあったんですけど、共有はコード見れるとかそういうのだったんで

236デフォルトの名無しさん2015/06/30(火) 17:35:30.60ID:0T0Q+C6j
スレ違いだけどできないはずはないと思うよ
appsにアカウント登録できるはず

237デフォルトの名無しさん2015/07/01(水) 07:45:04.29ID:WrSpGcQO
>>235
1) googleアカウントでログインしてるユーザーだけに実行させることが出来る
2) アプリケーション側でどのアカウントで実行されているか把握することが出来る

1) と 2) を組み合わせれば可能

2382352015/07/01(水) 15:27:56.64ID:s1huTgGg
出来たよありがとう
"無ければ作れ"がGASでも通用したとか最高だ

239デフォルトの名無しさん2015/07/01(水) 15:58:11.31ID:WrSpGcQO
おめおめ

240デフォルトの名無しさん2015/07/04(土) 14:34:59.39ID:PdgAmMn6
GASに初トライしていて問題にブチあたりました。
解決方法があれば教えてください。


■やりたいこと
スプレッドシート内で
外部ページ情報を取得しリアルタイム・もしくはインターバル更新表示しい。
基本は自動更新

■更新条件
スプレッドシートを開いた
スプレッドシートのセルにユーザーから入力があった。
の両方です。

■ためしたこと。
1.=ImportXMLを使って取り込み
 単純な目的は果たせるがセルに埋め込むと取得データを加工するにしても限度がある。
また、同じURLを指定したセルが複数ある場合、同じデータなのにアクセスさせるのが無駄
2.GASでImportXML相当のことをしてみる
 セルから呼び出せる関数でUrlFetchApp.fetchを使ってみる。
 当初の目的は果たせるようになったが、セルの数が多く、
 またスクリプト実行テストを繰り返しているとあっというまに1日の呼び出し回数制限に達してしまう(無料アカなので2万回)
3.呼び出し制限に達しないようにするための工夫
 URLから取得した情報をプールしておき、前回取得からのインターバル時間を経過したら再取得してキャッシュ更新。
 または、キャッシュに存在しないデータを要求された場合もキャッシュ更新。
 キャッシュ場所は、自分のスプレッドシート内にcacheシートを生成してそこに書き込んでおく。
4.3までのロジック実装は完了し、スクリプトエディタの関数実行テストまでは正常完了

続きます。

241デフォルトの名無しさん2015/07/04(土) 14:44:48.33ID:PdgAmMn6
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 を呼び出す権限がありません
でした。

242デフォルトの名無しさん2015/07/04(土) 14:54:35.26ID:PdgAmMn6
6.キャッシュの保存場所
自分に書き込めない場合、どっかに保存できないの?と思い調べてみると
ScriptDb とか言うのがあるみたいですが、サービス終了予定の機能ぽいですし、
Google Cloud SQLとかいうのを使うしかない?有料??

■知りたい事
・1〜6の流れで問題となっているアクセス権を解決できる方法はありますか?
・無理な場合の代替え手法はありますか?
・そもそもアプローチが間違っている、こうしたほうが良いよ。
という感じでうs。

このまま、いろいろ渡り歩いていても遠回りになりそうな予感なので質問してみました。
よろしくお願いします。

243デフォルトの名無しさん2015/07/04(土) 15:38:30.72ID:IUri6wsi
>>242
htmlservice + oauth2

2442402015/07/06(月) 03:19:41.60ID:c4e3DSSP
>>243
> >>242
> htmlservice + oauth2
ありがとうございます。
調べてみます。

245デフォルトの名無しさん2015/07/07(火) 01:32:45.09ID:OGGfcKdI
htmlからツイにつぶやくのをやってたら
(>_<)この顔文字が(&gt;_&lt;)こんななってたぶんそのせいででエラー吐くんだけどこれはreplaceすればいいのかな?
こういう表記になる文字ってたくさんあるのかな?

246デフォルトの名無しさん2015/07/07(火) 04:21:52.11ID:FHtVzgus
君にふさわしい板はこっち
http://kanae.2ch.net/php/

247デフォルトの名無しさん2015/07/07(火) 15:42:58.38ID:5Rsbcn5E
>>245
おいてめーそれ「はじめてのホームページビルダー」レベルじゃねぇか

248デフォルトの名無しさん2015/07/08(水) 23:01:03.10ID:oRYg8bj0
>>245
そういうのはエンコードすべきなんじゃないのか?

249デフォルトの名無しさん2015/07/08(水) 23:17:38.40ID:Nj43MlcH
>>246
PHPはちょっと良くわかんないです
gasですし

>>247
そうなんですよね〜
初心者なんです

>>248
エンコードですか
調べてみます

2502402015/07/12(日) 18:50:40.39ID:yhZDzWcx
>>243
> >>242
> 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ファイル)
が実現できないと思うのですが、どうでしょう?

251デフォルトの名無しさん2015/07/12(日) 19:09:03.00ID:slCoB0p4
設定間違えてるに+1

252デフォルトの名無しさん2015/07/13(月) 17:53:46.10ID:UxTEJ+9t
node.js / io.js 動けばいいのにね

253デフォルトの名無しさん2015/07/15(水) 20:57:05.83ID:70iQnSqB
新たなるオライリー本か?
http://www.amazon.co.jp/dp/B00TN97BE2

254デフォルトの名無しさん2015/07/19(日) 04:21:49.78ID:eNaDFGYO
分かる人がいたら教えて下さい

function upload() {
var clientId = '*************';
var imgUrl = 'http://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/

255デフォルトの名無しさん2015/07/19(日) 05:55:09.18ID:EU0ROg42
ttp://www.google.co.jp/images/srpr/logo11w.png
404
The requested URL /images/srpr/logo11w.png'; was not found on this server.

256デフォルトの名無しさん2015/07/19(日) 06:53:12.05ID:eNaDFGYO
普通に繋がるんですが・・・
というか画像のURLに関しては色々試してます

257デフォルトの名無しさん2015/07/19(日) 07:23:46.52ID:EU0ROg42
さっきはエラってたが

258デフォルトの名無しさん2015/07/19(日) 13:37:40.69ID:Npxm1YBj

259デフォルトの名無しさん2015/07/19(日) 14:52:50.12ID:Npxm1YBj
data: {
type: 'base64',
image: 'hogehoge(base64data)hogehoge'
}

ためしてみたけど

400
Image format not supported, or image is corrupt.

なんぞこれ

260デフォルトの名無しさん2015/07/19(日) 16:20:37.89ID:MA6NEEKT
>>254
OAuth2の認証系をしっかり組んでないからじゃないかね。
http://wp.me/p5KJV2-9k

261デフォルトの名無しさん2015/07/19(日) 17:02:15.86ID:G63bEDLi
>>254
もう一度よく、下記のURL見て組んでみるヨロし
https://api.imgur.com/oauth2

262デフォルトの名無しさん2015/07/19(日) 17:26:45.22ID:eNaDFGYO
>>260>>261
そっちなんですね
読んできます
ありがとうございます

263デフォルトの名無しさん2015/07/20(月) 01:12:32.08ID:M+3F+JJV
読んでも全然わかんないや(´・ω・`)
ツイとかはコピペでなんとかなったけどimgurはあんまり見つかんないからやっぱ自力じゃ無理なのかな

264デフォルトの名無しさん2015/07/20(月) 01:28:27.60ID:M+3F+JJV
getの方は出来たんだけどなぁ
もうちょっと読んでみよ英語分かんないけど

function getImage(id) {
var service = getService();
if (service.hasAccess()) {
var url = 'https://api.imgur.com/3/image/' + id;
var response = UrlFetchApp.fetch(url, {
method: 'get',
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
var result = JSON.parse(response.getContentText());
return result;
// Logger.log(result);
} else {
var authorizationUrl = service.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s',
authorizationUrl);
}
}

265デフォルトの名無しさん2015/07/20(月) 04:39:02.07ID:/UvV48hv
>>254 のは匿名うp用の認証してるからOAuth2は関係ないね

266デフォルトの名無しさん2015/07/20(月) 10:41:38.27ID:11U3Dh8m
Content-Type: application/json
つけたらでけた

267デフォルトの名無しさん2015/07/20(月) 23:29:34.40ID:M+3F+JJV
どこに付ければいいか分からないので適当に色々なところに付けてみましたが出来ませんでした
もう少し詳しくお願いします

268デフォルトの名無しさん2015/07/21(火) 20:08:20.82ID:S4WMmXN0
headers: {
Authorization: 'Client-ID ' + clientId,
Content-Type: 'application/json'
},

269デフォルトの名無しさん2015/07/21(火) 22:14:27.88ID:cjPlPdED
>>268
そう書くと保存の時に「プロパティ ID の後に : がありません。」ってエラーが出るんですけどなんでだろう
headers: {
Authorization: 'Client-ID ' + clientId,
Content-Type: 'application/json'    ←この行
},

270デフォルトの名無しさん2015/07/21(火) 23:22:00.36ID:cjPlPdED
'Content-Type': にしてみてもダメでした

271デフォルトの名無しさん2015/07/22(水) 08:36:09.80ID:FlFswPU7
馬鹿には無理

272デフォルトの名無しさん2015/07/24(金) 07:31:33.29ID:NfS3cn5h
もっとやさしくしてください

273デフォルトの名無しさん2015/07/24(金) 15:37:18.28ID:YFrH4Ww5
やさしくやさしくやさしくね

274デフォルトの名無しさん2015/07/24(金) 20:21:19.80ID:dvC3Xj8J
いとしさとせつなさとこころづよさと

275デフォルトの名無しさん2015/08/20(木) 11:36:44.28ID:pV6cw7bo
詰んってる

276デフォルトの名無しさん2015/08/26(水) 18:33:14.63ID:AtwE5MzM

277デフォルトの名無しさん2015/10/15(木) 18:03:33.74ID:bdlPZJI1
py

278デフォルトの名無しさん2015/10/26(月) 00:51:32.73ID:pJrmvVTd
multipartで渡してエラー吐くと思ったらJSONで渡すんだねこれ…

279デフォルトの名無しさん2015/10/28(水) 22:28:05.44ID:58PwIK9B
独自関数(自作)でbackGroundの色が特定の色の場合にsumする関数をつくりたいんだけど、
引数でバックグラウンドの色ってとりだせるの?

というより、適当に作ったんだけど、スクリプト保存しないと独自関数を使用しているセルが更新されなくて困ってる。

280デフォルトの名無しさん2015/11/05(木) 20:42:24.52ID:6t/dd9qY
何でもできるようになってきて
すごくありがたく使わせてもらってるんだけど
実行速度が遅いのは何とかしてほしいなぁ

281デフォルトの名無しさん2015/11/06(金) 18:30:44.33ID:F7EIvq3A
遅いね
あとREMOTE_ADDRとか取れなかった気がするのも痛い

282デフォルトの名無しさん2015/11/18(水) 03:36:46.11ID:CE5+T1br
スプレッドシートの0:00とか時間表記でのものを時と分に分けて数値として扱いたくて
getRangeで2次元配列で読み込んで時間の部分をsplit使って:で分けました
でもSSの時間部分の書式が日付になるとWed Nov 18 2015 00:00〜みたいなDateで読み込まれるし
書式なしテキストにするとStringになって数値として扱えないんです(8:00だったら8と00になって足すと800になる)
どうすればいいでしょうか?

283デフォルトの名無しさん2015/11/18(水) 05:27:10.31ID:2k4RwPb/
あきらめる

284デフォルトの名無しさん2015/11/18(水) 07:26:46.79ID:nLopjri3
>>282
固定させたいカラムを晒してくれないとわからない
カラムによってはその機能が備わってるみたいだし

285デフォルトの名無しさん2015/11/19(木) 00:23:18.88ID:gRbsU57g
*60は?

286デフォルトの名無しさん2015/11/20(金) 06:21:50.68ID:bl9/kj42
ごめんなさい
自己解決しました
Number()ってのをつかったらいけました

287デフォルトの名無しさん2015/11/27(金) 15:20:14.09ID:c/N8jVfb
火事お見舞い申し上げます。

288デフォルトの名無しさん2015/12/03(木) 15:49:15.48ID:5y9yFaIO
test

289デフォルトの名無しさん2015/12/16(水) 14:14:14.45ID:kHfROXFw
グローバルでconstを使うと、
「TypeError: 定数 **** の再宣言。」
とエラーが出るのですが、グローバルではconstは使えないのでしょうか?

290デフォルトの名無しさん2015/12/17(木) 12:07:32.69ID:Szn4FINI
>再宣言

291デフォルトの名無しさん2015/12/19(土) 21:20:25.74ID:0J9ouBIM
シート上のデータをまとめてカレンダーに移したいのですが
GASからbatch requestで処理できますか?
もしできるなら似たような事例でコードがわかるものを教えてください

292デフォルトの名無しさん2015/12/20(日) 11:31:59.34ID:8RLYRFXT
出来ますよ

293デフォルトの名無しさん2015/12/20(日) 16:16:42.06ID:8RLYRFXT
どうやんの

294デフォルトの名無しさん2015/12/21(月) 12:08:37.40ID:Hf5X7byl
>>291
CalendarApp使えばいいじゃん

295デフォルトの名無しさん2015/12/22(火) 14:35:21.60ID:Cg7y4/KF
>>290
すみません、説明が不足していました。
constで定義した名前は他の場所では宣言していません。
ただ、グローバルでconstを使うと、再宣言していない定数でも
「TypeError: 定数 **** の再宣言。」とエラーになってしまいます。
(function内などのスコープではconstは普通に使えています。)

constでなくvarを使うと再宣言のエラーは出ません。
また、const指定する定数の名前は何にしても再宣言のエラーが出ます。

constの使い方が間違っているのかもしれませんが、何かおかしい点があれば教えていただけないでしょうか?

296デフォルトの名無しさん2015/12/22(火) 15:36:52.19ID:WRvltcSm
すごく初歩的な質問だと思うのですが原因が解りません
どなたか教えて下さい

下記サイトを参考にスクリプトを作成したのですが
http://chaika.hatenablog.com/entry/2015/09/03/143622
デバッグすると一番最初の
var ss = evt.source.getActiveSheet();
の箇所で
TypeError: undefined からプロパティ「source」を読み取れません。(行 3、ファイル「コード」)
と出てしまいます

ググったところ、スクリプトの作成元が間違っていると出たりするようですが
参考サイトではスプレッドシートから作成、とあるので間違いではないと思います
かといって何が問題なのか解りません

297デフォルトの名無しさん2015/12/23(水) 08:28:53.59ID:2F8TsTF+
3. エディタのリソースをクリックして、**現在のプロジェクトのトリガー**を選択
4. 実行をonEditEvent、イベントをスプレッドシートから・編集時 にして保存

298デフォルトの名無しさん2015/12/23(水) 13:31:42.44ID:LnNJH8Hn
>>297
296です
その設定はやってあります
再度確認しましたがその通りになっています
ですが、デバッグすると296の通りです
https://i.gyazo.com/196e454d6eee012351e550aa5cbf3cd3.png

299デフォルトの名無しさん2015/12/24(木) 01:20:26.04ID:Icnst7JF
関数指定してデバッグボタン押しただけとか?
まさかなー

300デフォルトの名無しさん2015/12/24(木) 16:49:29.65ID:4YM2CMve
あるある

301デフォルトの名無しさん2015/12/24(木) 20:07:56.13ID:Dg+ThN48
>>299
296です
私へのレスでしょうか?
何かやり方が間違っているのでしたら教えていただけませんか?

302デフォルトの名無しさん2015/12/24(木) 21:14:24.02ID:Icnst7JF
いや、俺もトリガーの機能をここのやり取りで知ったぐらいだけど、
デバッグボタンを押すだけだったら
onEditEvent();
と呼び出されるだけじゃない
evtがundefinedなのはそのせいかなと思って
実際どうなん?

正式なやり方はしらんけど、Loggerでトリガーが起動された時に
どんなオブジェクトが渡されてくるかを調べる
そういうオブジェクトを自力で用意してonEditEventに渡す関数を作成する
その関数をデバッグモードで起動
とかするんじゃないのかな
ググってみればやっている人いるかも

303デフォルトの名無しさん2016/01/31(日) 12:12:27.01ID:Y0j0ifuu
とりあえず、「Hello,World」から始めようと思ってやってみたんですが、

「Cannot call Browser.msgBox() from this context;
have you tried Logger.log() instead? (line 1, file "helloworld")」

とエラーがでていきなり動きません。
エラー内容で検索してみたのですが、
同様のケースは見つからず困っています。
原因は何なのでしょう?

ソースは以下の通りです。↓

function myFunction() {
Browser.msgBox("Hello World!");
}

304デフォルトの名無しさん2016/01/31(日) 12:40:01.06ID:35YTNVlr
スプレッドシートで やったら普通に動いたよ
this contextとある様にどんな状況でスクリプトを実行しているかが問題だと思う

305デフォルトの名無しさん2016/01/31(日) 19:52:12.09ID:iHBYUhz2
>>303
そもそも、Browser.msgBoxってスプレッドシートでしか使えませんよ。

なので、普通は例えば

var ui = SpreadsheetApp.getUi();
ui.alert(“helllo world”);

です。uiのgetUiの部分をDocumentApp.getUiにすればドキュメントでも
同じように使えます。Browser.msgBoxは現在は非推奨ですよ。

306デフォルトの名無しさん2016/02/01(月) 15:04:44.00ID:C4njzqYk
>>303
> from this context

307デフォルトの名無しさん2016/02/01(月) 17:37:08.92ID:zFO6PW8k
>>304 >>305 >>306
「Hello World」はスプレッドシート経由じゃないと実行できないんですね。
私はGoogleDriveからスクリプトを新規作成して実行していました。
だからエラーがでて動かなかったんですね。

ためしにスプレッドシート経由で動かしてみたところ、
無事、「Hello World」が表示されました。

教えていただいて、ありがとうございました。助かりました。

308デフォルトの名無しさん2016/02/29(月) 07:51:01.35ID:tfVkN3NW
インスタのAPIで色々しようと思ったけどoauth2が全然分かんないや
gasでインスタapi扱い方書いてるサイトとかないだろうか?

309デフォルトの名無しさん2016/03/16(水) 16:45:59.48ID:AoxyQu12
現在、Google DriveをAPI経由で使うための勉強をしています。

[root]
 +[個人的なフォルダ]
 +[公開している共有しているフォルダ]

このような構成で、API経由で両フォルダ上にファイルの読み書きを想定しています。
ひの際に使うアクセストークンが知られてしまうと
だれでも両フォルダのの中身をいじることができるようになってしまいます。

そこで質問なのですが、「公開している共有しているフォルダ」の操作だけを
許可するトークンは発行できるのでしょうか。

ひとつユーザを作って「公開している共有しているフォルダ」を共有し
そのユーザでトークンを発行すれば期待どおりになるということはわかったのですが、
お金を削減したいので、ひとつの特権管理者ユーザだけで実現したいのです。

お詳しい方いらっしゃいましたら、どうか教えて下さい。

310デフォルトの名無しさん2016/03/18(金) 22:40:22.81ID:Q3hcmZkc
>>309
googleアカウントでログインさせろ

311デフォルトの名無しさん2016/03/21(月) 20:12:50.73ID:49NnzOUU
>>309
アクセストークン使わずにコーディングする。ヒントhScript.getOauthTokenだったかな。

PDF作成時にも使う手ですよ。

312デフォルトの名無しさん2016/03/21(月) 20:13:28.35ID:49NnzOUU
ScriptAppだった。

313デフォルトの名無しさん2016/04/10(日) 21:58:42.74ID:q/cDt/0h
GASのWebアプリケーションで質問です。

doGetで受けたパラメーターは
e.parameter.xxxで取得できますが
これをクライアントに渡す方法で悩んでます。

今はdoGetで受け取ったらUsetCacheに預けて
html(template)側で<? ?>を使って取り出しています。

初心者ながら、これがスマートじゃない気がして、
違和感を拭いきれないのです。

スマートな方法を教えてください。

314デフォルトの名無しさん2016/05/01(日) 16:22:45.99ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
17

315デフォルトの名無しさん2016/05/02(月) 15:16:04.56ID:aR8AOrvI
YahooAPIのスレは無い?

316デフォルトの名無しさん2016/05/27(金) 20:19:53.53ID:wEIQ/dS/
Google Apps Scriptって重くね?
かなり処理量すくないスクリプト書いたんだけどモッサリしてる。
起動が遅いだけなのかなぁ。

317デフォルトの名無しさん2016/05/28(土) 11:45:02.02ID:YkPoIoOS
超遅いよ

318デフォルトの名無しさん2016/05/28(土) 11:46:40.70ID:YkPoIoOS
コード更新後最初にアクセスしたときにプロセスが立ち上がる感じで
何度かアクセスするといくつかのプロセスが立ち上がるので
最初の数回は全部遅い感じがするが
しばらくすると速くなってくる
ただしプロセスのキャッシュ有効期限が過ぎるとまた最初からなので遅くなったり

319デフォルトの名無しさん2016/06/13(月) 11:51:06.87ID:0qOmRg0P
質問です。
スプレッドシート内にいくつかの図形を配置してるんですけど
セルの値が編集された時、一個の図形(地図画像)を
更新(画像削除→画像再配置)したいです。

今は画像を削除→画像作成script と手作業でしています。
この作業をscripで出来ますでしょうか?

320デフォルトの名無しさん2016/06/13(月) 15:00:26.33ID:zgrawcOE
削除しなくても更新される

321デフォルトの名無しさん2016/06/13(月) 20:58:26.01ID:EAqpGAx8
google siteってjavascript使えなくて、代わりにGAS使えってことなの?

322デフォルトの名無しさん2016/06/17(金) 23:25:49.12ID:ZmH+ZAWf
>>321
gasはあくまでサーバーサイドなので
クライアントサイドは普通にjs使えるのでは?

323デフォルトの名無しさん2016/06/18(土) 14:05:20.70ID:AGMP56Qn
js埋めても変換されて出力されるって話では

324デフォルトの名無しさん2016/07/03(日) 05:32:47.99ID:AkQnhWCl
>>321
元々サイトっていうより、Wikiなので。あのサービスは。

なので埋め込みのApps Scriptを使えって事です。

>>322
それはApps scriptのHTML Serviceの中の話です。

325デフォルトの名無しさん2016/07/03(日) 05:33:09.52ID:AkQnhWCl
>>323
サニタイズされて無効化されますよ

326デフォルトの名無しさん2016/07/26(火) 19:17:35.47ID:SrT4PCno
実行している自分自身のFile IDを取得するにはどうしたらいいでしょうか

3273262016/07/28(木) 10:11:10.32ID:LxRDdK5b
自己解決しました、やりたかったのは同じソースでも実行するfile idによって動作を変えたかった、なんですが、
ローカルで開発してgapps pushするときにうまく切り替えるようにしました、、、

328デフォルトの名無しさん2016/07/28(木) 19:04:49.94ID:O8Vfrh0P
FileIDかどうかは知らんけどデプロイして変わったのを知りたいなら
AppVersionみたいなのは実行中に取れた気がする
(管理画面に表示されるやつと同じもの)

329デフォルトの名無しさん2016/08/05(金) 07:48:44.14ID:OmPlANC2
質問するスレ間違えてたみたいなのでここで改めて質問させてください

http://hesonogoma.com/stocks/japan-all-stock-prices.html
この株価データサイトのデータを定期的にスプレッドシートに表示させたくて
ここ数ヶ月悩んでます

1
サイト下部にある Copy to Clipboad からコピーしてシートに貼り付ける
というスクリプトは可能ですか?出来るならどうすればいいのでしょうか?

2
CSVファイルをダウンロード
本来はこのやり方を調べていました。が、flashで表示されているのでurlが判らず
お手上げ状態に・・

1が無理なら2を何とかしたいと思っております

330デフォルトの名無しさん2016/08/05(金) 12:12:46.89ID:LJe/qM3f
課金が必要

331デフォルトの名無しさん2016/08/05(金) 12:16:56.28ID:LJe/qM3f
っつーか PritView でよくね
ただの html 取れるぞ

3323292016/08/06(土) 08:04:08.54ID:2dv1pXxg
>>331
レス有難うございます。PrintViewでどうにかできそうですか!

でもどうすればいいか解らないレベルなので
とりあえず図書館でjavascriptの本を借りてきました

「はじめに」
読んでるうちに寝てもうたw

3333292016/08/06(土) 08:13:37.42ID:2dv1pXxg
ちなみに>329の2を試してみたときのコードが

function getCsvSample() {
var folderId = '***********';
var destfolder = DriveApp.getFolderById(folderId);
var date = "2016-08-04";
var response = UrlFetchApp.fetch("http://hesonogoma.com/stocks/media/swf/copy_csv_xls_pdf.swf");
destfolder.createFile(date + '.csv', response.getContentText('Shift_JIS'));
}

です。拾ってきたコードをいじって実行したら
謎の文字化け集団が襲ってきました (ここで心折れる)

334デフォルトの名無しさん2016/08/10(水) 23:27:34.29ID:U9v+Tybh
GASでスクレイピングしたいんですが、UrlFetchAppで取得したHTML(XMLじゃない)をDOM化するのってできますでしょうか?
正規表現で必要なところを取ってくるのは心が折れそうなので、セレクタで処理したいです。

335デフォルトの名無しさん2016/08/11(木) 11:55:28.49ID:v2n9djjr
OK

336デフォルトの名無しさん2016/08/11(木) 16:34:55.39ID:qVxIjH10
>>329-333
Shift_JIS ではなく、UTF-8 で保存すれば?

その後、TeraPad などのエディタで、Shift_JIS に変換する

3373292016/08/13(土) 07:36:05.54ID:VdLmMpzK
>>336
レスありがとうございます
試してみたんですが、うまく変換できませんでした
やっぱりurlが違うのかな、、

このスレの質問、回答がほとんど理解できてない程度ので
もう少し基本からじっくり勉強してみます!
>>329の1だけ
引き続き質問を残させてください

338デフォルトの名無しさん2016/08/13(土) 17:13:54.48ID:byPJKfY1
GAS関係なくね?

339デフォルトの名無しさん2016/08/23(火) 14:00:18.41ID:SYSHEBtV
>>329
CSVならGASでドライブに1回保存してからインポートすれば?
次の実行時にドライブAPIでファイル消せば残らんし
もしくはこれ
http://qiita.com/ms32/items/7e180c1c1d00fa8df647

>>334
parserつかえ
http://qiita.com/fireowl11/items/e703e35073b600528e7c

340デフォルトの名無しさん2016/08/24(水) 01:12:18.88ID:dEIn8nhr
GASでgoogleAPIを叩いてgmailの下書きを作成するものを作ったのですが、
これを毎日作成(雛形をコピー)するスプレッドシードで使いたいと思っています。
スプレッドシートに書いてコピーすると、gAPIの紐付けプロジェクトが変わっているので設定しなおさなければ使えず、困っています。

スプレッドシートをコピーして、シート上のボタンを押したらすぐに下書きを作れる状態を作りたいのですが、どのような方法がありますか?

341デフォルトの名無しさん2016/08/24(水) 09:46:43.51ID:nL2g9QDB
>>340
GASのGmailAppでダメ?
ttp://qiita.com/minanami/items/87641f09192be1b5010b
個人的にはフォームから入力させた方がGUI的にいいと思うけど
スプレッドシートに保存したいならその後GASで自動追加させとけばいいし

342デフォルトの名無しさん2016/08/24(水) 15:58:08.87ID:Ku8YOB4B
>>340
ライブラリ化する

343デフォルトの名無しさん2016/08/25(木) 08:04:24.21ID:Y3c8VA1Y
>>339
329です 参考にしてみます
ありがとうございます!

344デフォルトの名無しさん2016/08/25(木) 23:18:14.53ID:5XLt8Aa8
>>329,>>343
よっしゃ、俺がやってやらぁ!って思って意気込んでサイトみたら普通にJSONで取れた
ttp://hesonogoma.com/stocks/data/japan-all-stock-prices.json

345デフォルトの名無しさん2016/08/27(土) 08:39:19.05ID:m8PsOLXX
>>344
おお、、、これで目的は果たせそうです
皆さん長々とありがとうございました!勉強も少しずつ続けます

3463342016/08/27(土) 11:42:11.09ID:RucMLpGl
>>339
ありがとうございます。ですが、そのライブラリだと正規表現を使うのと全く変わらないです。
いっそのこと自作しようと思います。
ありがとうございました。

347デフォルトの名無しさん2016/09/28(水) 22:05:17.24ID:eXjFddOW
ここ最近CalendarAppのアクセス頻度でエラーが出るようになった

Googleはアナウンスなしで仕様変更してくるのやめてほしい

348デフォルトの名無しさん2016/10/19(水) 12:06:30.27ID:r6QG4f4p
G Suite ω

349デフォルトの名無しさん2016/10/19(水) 18:25:48.15ID:V4/PZwvc
株価のサイトにはNASDAQとかもあるのか
このJSONデータが無料ってすごいな

350デフォルトの名無しさん2016/10/22(土) 17:05:09.77ID:O48rD9qT
>>347
ほんそれ

351デフォルトの名無しさん2016/11/25(金) 23:29:15.59ID:dTj7tfXq
プロジェクトの.gsファイルって並び替えってできないんですか?

352デフォルトの名無しさん2016/12/13(火) 18:03:00.36ID:x2U1jQSF
google sitesとスプレッドシートとの連携について教えて下さい。

google sitesで作成したページ(AAAについての確認とします)上に個人名でいくつかの
CK BOXがあります。

----------------------------
<AAAについての確認>
□Aさん
□Bくん
□Cちゃん
□Dちゃん
□Eさん

送信
----------------------------

いくつかのCK BOXにCKが入っているとして”送信”を押したら次の様にスプレッドシートを操作する方法を
教えて下さい。

1. googleドライブ上の指定されたスプレッドシート内に<AAAについての確認>というシートが作成される。
2. 1で作成されたシートにAさんからEさんまでのCK BOX STATUSを記録する
3. 送信した日付も記録する

目的としては、家族内情報共有ホームページを作成したいです。
Googleサイトが無償でホームページが作成できるとのことでGoogleサイトでのこの内容の動きが
出来るか教えていただきたいです。

353デフォルトの名無しさん2016/12/13(火) 21:30:54.00ID:mRmuTzdU
フォームの名前を<AAAについての確認>とすればいい。

354デフォルトの名無しさん2016/12/14(水) 13:19:44.27ID:UzzFPJML
CK BOX
って何かと思った

355デフォルトの名無しさん2016/12/17(土) 01:48:09.89ID:3C8QRPXl
GASであるサイトをスクレイピングしたいけど、ログインしないと情報が取得できない。
クッキーをセットしたりすればログインしてアクセスできるけど、それってセキュリティ的に危険かな?

356デフォルトの名無しさん2016/12/19(月) 23:51:02.67ID:Hch485Lz
GASでスプレッドシートをいじろうと思ってるのですか、まず有効なスプレッドシートを選択してくださいと。と表示されてできません。なにがダメなのでしょうか。下記のようにやっています。

var ss = SpreadsheetApp.OpenById("");
var sheet = ss.getSheetByName("");

SpreadsheetApp.setActiveSheet(sheet);

357デフォルトの名無しさん2016/12/20(火) 12:59:03.44ID:lAXr92yw
IDは?

358デフォルトの名無しさん2016/12/20(火) 19:57:35.71ID:ktde9hau
oops

359デフォルトの名無しさん2016/12/21(水) 00:25:00.04ID:nYEPRmnr
ID、シート名ともにあってます…

スプレッドシートからスクリプトエディタを使わないとできないのでしょうか?今は別にスクリプトファイルを作ってやってます

360デフォルトの名無しさん2016/12/21(水) 08:27:21.58ID:h8+/QyVK
>>356
”→'

361デフォルトの名無しさん2016/12/22(木) 18:37:45.76ID:0Tg51mYJ
>>356
3行目は開いてるスプレッドシートに対してしか効かないとか。
試してないけど。

別に開かずとも変数sheetは取れてるだろうから、3行目は書かなくてもその後のやりたいことはできるのでは?

362デフォルトの名無しさん2016/12/22(木) 18:40:37.70ID:0Tg51mYJ
>>361
もしくは、3行目を
SpreadsheetApp.setActiveSheet
じゃなくて
ss.setActiveSheet
ってできないかな?

363デフォルトの名無しさん2016/12/22(木) 23:50:12.42ID:TIDq1bhf

364デフォルトの名無しさん2016/12/27(火) 01:28:56.39ID:tIGH6DEG
みなさんありがとうございました!

Var SS = SpreadsheetApp.openById("");
Var sheet = SS.getSheetByName("");

SpreadsheetApp.getActivesheet ();

でエラー出ずにやることができました

365デフォルトの名無しさん2016/12/27(火) 14:37:37.38ID:6KX94UiV
sheetが使われてない

366デフォルトの名無しさん2017/01/08(日) 20:32:30.74ID:BBb65MXo
GASでローカルのtxt、たとえばc:\\test.txtなんかをスプレッドシートに展開したいのだけれど
csvを展開するスクリプト(https://github.com/prog-mitsu/importCsv
をいじくりまわしてもどうもうまくいかない

このスクリプトだと、フォームが表示されるのだけれど
フォームの表示なしで、固定のテキストファイル(たとえばc:\\test.txt)を展開することって
GASではむりなんかいな?

367デフォルトの名無しさん2017/01/08(日) 21:45:18.24ID:5b4VWoeT
ローカルのものをGoogleDriveにupするAPIはあるよ

3683662017/01/09(月) 07:41:00.04ID:kW/T2j6A
>>367
早速の返信ありがとうございます
いろいろ調べましたが
http://tokidoki-web.com/2013/08/file-api%E3%81%A7%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E3%82%84%E3%82%93%E3%82%88/
にあるとおり

>セキュリティの問題上でパスを「C:\file.txt」や「../text/file.txt」の様に指定してファイルを書き直す事はできません。

との状況です

369デフォルトの名無しさん2017/01/09(月) 10:02:02.53ID:/7U8UXhW
ローカルのものをGoogleDriveにupしたあと
それをGASで開くんだよ

3703662017/01/12(木) 21:41:52.77ID:35gbmkUr
>>369
その、「ローカルのものをGoogleDriveにup」をフォームなどの表示なしに自動化したいのです

371デフォルトの名無しさん2017/01/13(金) 00:01:00.63ID:YkcCHApN
>>370
デスクトップ版のGoogle Drive使って
自動同期でうpすれば?

3723662017/01/13(金) 23:07:28.92ID:lbjer3ZB
>>371
ありがとうできました。

373デフォルトの名無しさん2017/02/02(木) 07:52:54.77ID:hDfY8PDB
半年ほど前にお世話になった者です

スプレッドシートでimportdata関数を使っていたんですが
Loading......が頻発するので、やはりGASで対処したいのです
データ取得までは出来てると思うのですが、シートに書き込む段階が全くおかしいようで・・


function fetchData(){
var response = UrlFetchApp.fetch("http://hesonogoma.com/stocks/data/japan-all-stock-prices");
var json = response.getContentText();
var kakaku = JSON.parse(json);

var range = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 1);
range.offset(0, 0, 6000, 26).clear();

for(var i=0; i<kakaku.length; i++) {
var event = kakaku[i];

range.offset(i+1,0).setValue(event);
}
}

正解か、参考になるサイトをご教授いただきたいのです
色んなサイトのコード切り貼りしすぎて、頭がおかしくなってきたw

374デフォルトの名無しさん2017/02/02(木) 12:56:10.24ID:Y5kXFMjA
アクセス権は?

3753732017/02/03(金) 06:23:34.32ID:HRggU1Ve
>>374
仕組みがよくわからないんですが、
ログにはデータ表示されるのでアクセスは出来ているはず・・・

・・もしかしてアクセス権というのは違法性の問題とかですか!?
すみません、だったら質問とりやめますが

376デフォルトの名無しさん2017/02/03(金) 08:05:00.39ID:HRggU1Ve
色々やってみたら一応なんとかなりました
1年ちょいのモヤモヤが一気に解消して、いま涙目になってますウォォ

ありがとうございました!

377デフォルトの名無しさん2017/02/03(金) 16:11:50.71ID:Jl+ODihZ
役に立たんちんぽだな

378デフォルトの名無しさん2017/02/15(水) 00:43:00.46ID:8OzNcjl5
エラーのメールいっぱいくるからトリガー止めようと思っても保存押したらサーバーエラーになっちゃう

379デフォルトの名無しさん2017/02/15(水) 13:37:01.14ID:8OzNcjl5
"サービスで1日に使用しているコンピュータ時間が長すぎます”っていうエラー出るだけど
どういうエラーか分かりますか?
なにもいじってないのに昨晩から急に出るようになった

380デフォルトの名無しさん2017/02/15(水) 13:39:42.93ID:0zPxl8zN
無限ループ

381デフォルトの名無しさん2017/02/15(水) 13:40:56.40ID:8OzNcjl5
なるほど
なんで急になったんだろう

382デフォルトの名無しさん2017/02/18(土) 13:34:37.67ID:sYCIN7Mu
1日のMAXが累計1時間だっけか
処理回数が多いか、実行時間が長いんだろうな

3833792017/02/19(日) 12:34:42.66ID:I5IVz31O
1日止めて何も変えずトリガー元に戻しましたが、今のところ問題無し
数は減らしましたがペースは変えず

384デフォルトの名無しさん2017/02/27(月) 17:20:09.61ID:D6mIqUvN
Spreadsheetで行の非表示/表示はsheet.hideRow(rowIndex)/sheet.unhideRow(rowIndex)ですが、
ある行が非表示であるかどうかはどのように確認できますか?

385デフォルトの名無しさん2017/03/02(木) 18:37:21.00ID:ZV5SMkF2
visible

386デフォルトの名無しさん2017/03/09(木) 00:32:07.05ID:JhFIW3VD
>>385
ありがとうございます。それってどのクラスから生えてますか?
一応、下のようになってみましたができませんでした。
sheet.getRange(1, 1).visible

387デフォルトの名無しさん2017/03/09(木) 00:45:24.51ID:9+K5Dr1K
Visible

388デフォルトの名無しさん2017/03/10(金) 02:53:31.23ID:+YP/FacC
https://code.google.com/p/google-apps-script-issues/issues/detail?id=195
これがOpen issueってことはサポートされてないんでは?

389デフォルトの名無しさん2017/03/11(土) 14:16:44.62ID:QRqRtZxP
>>388
ありがとうございます。確かにそのページによるとサポートされてなさそうですね。
stackoverflowでいくつかの同様な質問を見つけましたが、できない的なことが書かれてました。
visibleの件ももう少し調べてみて、できそうになかったら諦めます。

390デフォルトの名無しさん2017/03/26(日) 23:38:49.69ID:bKMbQXbX
var triggerUniqueId = ScriptApp.newTrigger("doPost2")
.timeBased()
.after(100)
.create()
.getUniqueId();

これを実行すると以下の3パターンの動作になるのだがなんとかならないかな?
・すぐにdoPost2に飛んでくる
・数秒〜数十秒後にdoPost2に飛んでくる
・どんだけ待とうがdoPost2に飛んでこない(何分か待ってれば飛んでくるのか?)

ちなみに飛んでこなかった場合は全てのトリガを削除してからやり直してる。

3913902017/03/27(月) 00:25:00.99ID:0WjH3gBI
微妙に勘違いされそうな書き方だったので追記

doPost2に飛んできたときはその中でトリガを削除しているので
「飛んでこなかった場合は全てのトリガを削除してからやり直してる。」ということです。

392デフォルトの名無しさん2017/03/27(月) 01:50:47.06ID:R2ENwT8H
100ms後にdoPost2に飛ばしたいってこと?
最終的になにがしたいかわからん
そのidでなにすんの?

393デフォルトの名無しさん2017/03/27(月) 07:58:56.68ID:7fg5PAil
PayPal IPNの処理が目的です。

394デフォルトの名無しさん2017/03/27(月) 08:47:26.49ID:VebtMPKj
目先の目的は「指定した時間後にdoPost2を実行したい」です。
100msが1秒になるにはまだ許容範囲ですが、
さすがに数十秒後やかなり待っても飛んでこないのはなにか設定がおかしいのかなと。

395デフォルトの名無しさん2017/03/27(月) 20:46:24.21ID:2rEhsR/n
トリガーをつくるのではなく、Utilities.sleepじゃダメ?

396デフォルトの名無しさん2017/03/27(月) 23:05:58.94ID:8SS48vh4
大雑把に以下のような流れになるのでsleepでは無理っす。
1, PayPalからPOSTがくる
2, PayPalにHTTP 200を返す
3, PayPalにPOSTを投げる
https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/

function doPost(e) {
 トリガ仕掛ける
 HTTP 200を返す
}
function doPost2() {
 POSTを投げる
}

いろいろ試したけど60秒とか大きな値ならそれっぽいタイミングでトリガがかかるみたい。
短すぎる設定時間はダメなのかなぁ。

397デフォルトの名無しさん2017/03/28(火) 08:44:43.71ID:o5IlqyIy
トリガの指定って分単位だった気がする
内部的にcronだから
○時ちょうどにトリガー仕掛けたくて試したけど無理で、59分にしかけて00秒まで待つって実装にしたことがある
非同期処理ができないから難しいかも
秒数は一定じゃないから、1分後にトリガー設定しても最大1分59秒後になることもある
にしても面倒な仕様だなPaypal

398デフォルトの名無しさん2017/05/05(金) 06:31:43.18ID:SiZHVQw5
VBAのCall ステートメントは、Google Apps Scriptの場合どう記述すればいいですか?

399デフォルトの名無しさん2017/05/05(金) 07:47:20.79ID:SiZHVQw5
自己解決しました。(・ω<) テヘペロ

400デフォルトの名無しさん2017/05/14(日) 12:32:35.84ID:jKxGUXHj
アクティブシートのカーソルがあるセル(アクティブセル)の行番号を、別のシート(setei)のB1へコピーしたいのですが、
うまく行きません。
5行目のvar copyValue〜の値をmsgBoxで出力すると、希望通りの値が出ているので、そこまでは合っていると思うのでが、
6行目で取得した行番号を、別のシートのB1に入れる所で躓いています。解決方法を教えて頂けないでしょうか?

function myFunction() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet_copyFrom = sheet.getActiveSheet();
 var sheet_copyTo = sheet.getSheetByName('setei');
 var copyValue = sheet_copyFrom.getActiveCell().getRow();
 sheet_copyTo.getRange('B1').setValues(copyValue);
}

401デフォルトの名無しさん2017/05/14(日) 13:22:55.89ID:v32VfkzT
行番号をコピーするの?アクティブセルの値じゃなくて?

402デフォルトの名無しさん2017/05/14(日) 13:30:26.13ID:v32VfkzT
sheet_copyTo.getRange('B1').setValue(copyValue);

403デフォルトの名無しさん2017/05/14(日) 15:17:11.71ID:jKxGUXHj
>>401-402
希望どうりのことができました。ありがとうございます!
スペルが間違っていたとは・・

404デフォルトの名無しさん2017/05/21(日) 21:07:56.13ID:UO8/oZl+
質問です。

スプレッドシートのシートを並び替えることはできますか?
セル範囲のデータならSORTでできることは知っているのですが、シートには使えませんよね。

日付がシート名になってて、それを昇順に並び替えしたいのです。
よろしくお願いします。

405デフォルトの名無しさん2017/05/22(月) 08:08:37.50ID:Bx+b+qt8
出来ないことはなだろうが面倒くさいし、丸投げならお断り。

406デフォルトの名無しさん2017/05/22(月) 16:43:39.47ID:j0GB+9U0
IDかわりましたけど404です。
>>405
めんどくさい方法ですけど、一応自分で作ってはみました。
これよりいい方法があるのか、改めてお知恵をお貸しください。

var ss = SpreadsheetApp.openById(file.getId());
var sheets = ss.getSheets();
// シート名(yyyyMMdd形式)で昇順ソート
sheets.sort(function(a, b){
var aa = Number(a.getSheetName()) || a.getSheetName();
var bb = Number(b.getSheetName()) || b.getSheetName();
if (aa < bb) return -1;
if (aa > bb) return 1;
return 0;
});
// 別スプレッドシートにコピー
for (var n in sheets)
{
var sheet = sheets[n];
var sheetName = sheet.getSheetName();
sheet.copyTo(sortedSs).setName(sheetName);
}

同じスプレッドシートでの並べ替えを諦めて、別スプレッドシートにソート済みをコピーしたってだけのものです。

407デフォルトの名無しさん2017/05/22(月) 22:49:33.07ID:Bx+b+qt8
1.シート数を取得
2.全シート名を配列へ
3.配列をソート array.sort()
4.シートを移動

408デフォルトの名無しさん2017/05/23(火) 20:48:03.04ID:RApg7j5+
>>407
4. シートを移動

これができなくて悩んでたんですが
SpreadsheetオブジェクトにinsertSheetメソッドやmoveActiveSheetメソッドがありますね。
何とか実装できそうです。
ありがとうございました。

新着レスの表示
レスを投稿する