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/
探検
【MACRO】Google Apps Script 質問スレ【DRIVE】
2014/06/29(日) 11:07:03.38ID:5HmND7Qc
199デフォルトの名無しさん
2015/05/21(木) 08:29:47.62ID:x9iUxaW9 >>198
Excelは文字コード以前に形式違うからstringで取得できない
Excelは文字コード以前に形式違うからstringで取得できない
200デフォルトの名無しさん
2015/05/21(木) 09:50:23.52ID:x9iUxaW9 エクセルはどこでも話題になるけどDriveApp.searchFiles()で一応文章検索はできるから
セルのstring情報はどっかに記録されてる
ただ引き出して扱えるかどうか知らん
セルの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+8nxR204デフォルトの名無しさん
2015/05/23(土) 21:40:53.24ID:P22nVuYt205デフォルトの名無しさん
2015/05/27(水) 08:07:09.69ID:lvaBWQ33 >>204
君はGoogleのドキュメントがろくにメンテされてないこと知ってんの?
それと、GASで使うのにOAuthなんて使わないよw
JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに
関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え
ない発言だなw
君はGoogleのドキュメントがろくにメンテされてないこと知ってんの?
それと、GASで使うのにOAuthなんて使わないよw
JavaScriptで使う場合には必要だがそっちだって、OAuth2.0でのコーディングに
関しては別のページにあるし。GASやGoogle APIを弄っている人間とは到底思え
ない発言だなw
206デフォルトの名無しさん
2015/05/27(水) 11:08:24.77ID:fMt5EoRl > それと、GASで使うのにOAuthなんて使わないよw
ひょ、標準APIとの違いも解らない奴がココに居るのか
ちょっとキミにはこのスレちょっと早い
ひょ、標準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:smOTLbR3210デフォルトの名無しさん
2015/05/27(水) 16:29:32.25ID:smOTLbR3 >>204
それとお前。
OAuth1.0だから何?そんなもの自分で2.0の実装でも換装すりゃいいだけの
話だろww
馬鹿なの?それとも2.0のコードでも書けとか言ってるわけ?馬鹿には無理だ
から引っ込んでろ
それとお前。
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
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でも起きていてもんだいになってる。
そんなのしょっちゅうあるぜ?
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);
}
この問題って、フォームから文字列が入力されても既に書式設定してあるセルで
同じ事が起きるんだけど、地味に困ってる。
スプレッドシートの既知の問題?
例えば下のスクリプトを実行すると、既に長い文字列が入ってるセルがあっても
折り返してくれない。
(スクリプト実行後、ボタンはちゃんと「テキストの折り返し」になってるし、ボタン押せば折り返す)
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!と表示されますが投稿されません。
どうしたら投稿できるようにできますか?
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!と表示されますが投稿されません。
どうしたら投稿できるようにできますか?
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);
}
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();
221219
2015/06/12(金) 20:37:23.23ID:RT2PlkdQ 220
できましたどうもありがとうございます。
できましたどうもありがとうございます。
222デフォルトの名無しさん
2015/06/13(土) 03:16:47.88ID:NUKk6CPY どういたしまして
223219
2015/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');
では取得できません。
どういう書き方にすれば取得できるようになるのでしょうか?
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そのものの本質を追究する姿勢が培われなくなってしまう
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)
>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)
232223
2015/06/17(水) 05:49:31.92ID:pjaGN1aW ありがとうございます。
rdf:aboutのようなのは名前空間というみたいで
XmlService.getNamespaceを指定すると使えるようです。
詳しくはこちらに載っていました。
https://msdn.microsoft.com/ja-jp/library/aa468565.aspx
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の基本を鼻高々に解説されても
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にアカウント登録できるはず
appsにアカウント登録できるはず
237デフォルトの名無しさん
2015/07/01(水) 07:45:04.29ID:WrSpGcQO >>235
1) googleアカウントでログインしてるユーザーだけに実行させることが出来る
2) アプリケーション側でどのアカウントで実行されているか把握することが出来る
1) と 2) を組み合わせれば可能
1) googleアカウントでログインしてるユーザーだけに実行させることが出来る
2) アプリケーション側でどのアカウントで実行されているか把握することが出来る
1) と 2) を組み合わせれば可能
238235
2015/07/01(水) 15:27:56.64ID:s1huTgGg 出来たよありがとう
"無ければ作れ"がGASでも通用したとか最高だ
"無ければ作れ"が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までのロジック実装は完了し、スクリプトエディタの関数実行テストまでは正常完了
続きます。
解決方法があれば教えてください。
■やりたいこと
スプレッドシート内で
外部ページ情報を取得しリアルタイム・もしくはインターバル更新表示しい。
基本は自動更新
■更新条件
スプレッドシートを開いた
スプレッドシートのセルにユーザーから入力があった。
の両方です。
■ためしたこと。
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 を呼び出す権限がありません
でした。
しかし、これの関数をセルから呼び出そうとするとエラーになります。
エラーはシートに対して操作権限がないといわれます。
調べたところセルで関数を呼び出した場合、
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。
このまま、いろいろ渡り歩いていても遠回りになりそうな予感なので質問してみました。
よろしくお願いします。
自分に書き込めない場合、どっかに保存できないの?と思い調べてみると
ScriptDb とか言うのがあるみたいですが、サービス終了予定の機能ぽいですし、
Google Cloud SQLとかいうのを使うしかない?有料??
■知りたい事
・1〜6の流れで問題となっているアクセス権を解決できる方法はありますか?
・無理な場合の代替え手法はありますか?
・そもそもアプローチが間違っている、こうしたほうが良いよ。
という感じでうs。
このまま、いろいろ渡り歩いていても遠回りになりそうな予感なので質問してみました。
よろしくお願いします。
243デフォルトの名無しさん
2015/07/04(土) 15:38:30.72ID:IUri6wsi >>242
htmlservice + oauth2
htmlservice + oauth2
245デフォルトの名無しさん
2015/07/07(火) 01:32:45.09ID:OGGfcKdI htmlからツイにつぶやくのをやってたら
(>_<)この顔文字が(>_<)こんななってたぶんそのせいででエラー吐くんだけどこれはreplaceすればいいのかな?
こういう表記になる文字ってたくさんあるのかな?
(>_<)この顔文字が(>_<)こんななってたぶんそのせいででエラー吐くんだけどこれはreplaceすればいいのかな?
こういう表記になる文字ってたくさんあるのかな?
246デフォルトの名無しさん
2015/07/07(火) 04:21:52.11ID:FHtVzgus 君にふさわしい板はこっち
http://kanae.2ch.net/php/
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:Nj43MlcH250240
2015/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ファイル)
が実現できないと思うのですが、どうでしょう?
> >>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
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/
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.
404
The requested URL /images/srpr/logo11w.png'; was not found on this server.
256デフォルトの名無しさん
2015/07/19(日) 06:53:12.05ID:eNaDFGYO 普通に繋がるんですが・・・
というか画像のURLに関しては色々試してます
というか画像のURLに関しては色々試してます
257デフォルトの名無しさん
2015/07/19(日) 07:23:46.52ID:EU0ROg42 さっきはエラってたが
258デフォルトの名無しさん
2015/07/19(日) 13:37:40.69ID:Npxm1YBj259デフォルトの名無しさん
2015/07/19(日) 14:52:50.12ID:Npxm1YBj data: {
type: 'base64',
image: 'hogehoge(base64data)hogehoge'
}
ためしてみたけど
400
Image format not supported, or image is corrupt.
なんぞこれ
type: 'base64',
image: 'hogehoge(base64data)hogehoge'
}
ためしてみたけど
400
Image format not supported, or image is corrupt.
なんぞこれ
260デフォルトの名無しさん
2015/07/19(日) 16:20:37.89ID:MA6NEEKT261デフォルトの名無しさん
2015/07/19(日) 17:02:15.86ID:G63bEDLi262デフォルトの名無しさん
2015/07/19(日) 17:26:45.22ID:eNaDFGYO263デフォルトの名無しさん
2015/07/20(月) 01:12:32.08ID:M+3F+JJV 読んでも全然わかんないや(´・ω・`)
ツイとかはコピペでなんとかなったけどimgurはあんまり見つかんないからやっぱ自力じゃ無理なのかな
ツイとかはコピペでなんとかなったけど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);
}
}
もうちょっと読んでみよ英語分かんないけど
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'
},
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' ←この行
},
そう書くと保存の時に「プロパティ 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:AtwE5MzM277デフォルトの名無しさん
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とか取れなかった気がするのも痛い
あと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になる)
どうすればいいでしょうか?
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:nLopjri3285デフォルトの名無しさん
2015/11/19(木) 00:23:18.88ID:gRbsU57g *60は?
286デフォルトの名無しさん
2015/11/20(金) 06:21:50.68ID:bl9/kj42 ごめんなさい
自己解決しました
Number()ってのをつかったらいけました
自己解決しました
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は使えないのでしょうか?
「TypeError: 定数 **** の再宣言。」
とエラーが出るのですが、グローバルではconstは使えないのでしょうか?
290デフォルトの名無しさん
2015/12/17(木) 12:07:32.69ID:Szn4FINI >再宣言
291デフォルトの名無しさん
2015/12/19(土) 21:20:25.74ID:0J9ouBIM シート上のデータをまとめてカレンダーに移したいのですが
GASからbatch requestで処理できますか?
もしできるなら似たような事例でコードがわかるものを教えてください
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使えばいいじゃん
CalendarApp使えばいいじゃん
295デフォルトの名無しさん
2015/12/22(火) 14:35:21.60ID:Cg7y4/KF >>290
すみません、説明が不足していました。
constで定義した名前は他の場所では宣言していません。
ただ、グローバルでconstを使うと、再宣言していない定数でも
「TypeError: 定数 **** の再宣言。」とエラーになってしまいます。
(function内などのスコープではconstは普通に使えています。)
constでなくvarを使うと再宣言のエラーは出ません。
また、const指定する定数の名前は何にしても再宣言のエラーが出ます。
constの使い方が間違っているのかもしれませんが、何かおかしい点があれば教えていただけないでしょうか?
すみません、説明が不足していました。
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、ファイル「コード」)
と出てしまいます
ググったところ、スクリプトの作成元が間違っていると出たりするようですが
参考サイトではスプレッドシートから作成、とあるので間違いではないと思います
かといって何が問題なのか解りません
どなたか教えて下さい
下記サイトを参考にスクリプトを作成したのですが
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、イベントをスプレッドシートから・編集時 にして保存
4. 実行をonEditEvent、イベントをスプレッドシートから・編集時 にして保存
298デフォルトの名無しさん
2015/12/23(水) 13:31:42.44ID:LnNJH8Hn >>297
296です
その設定はやってあります
再度確認しましたがその通りになっています
ですが、デバッグすると296の通りです
https://i.gyazo.com/196e454d6eee012351e550aa5cbf3cd3.png
296です
その設定はやってあります
再度確認しましたがその通りになっています
ですが、デバッグすると296の通りです
https://i.gyazo.com/196e454d6eee012351e550aa5cbf3cd3.png
レスを投稿する
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
