Googleサイトにアップロードしているすべて添付ファイル名を取得してスプレッドシートに流し込みたい(初心者)

192 views
Skip to first unread message

ony...@gmail.com

unread,
Jun 1, 2016, 2:22:55 AM6/1/16
to Google Apps API Japan
スプレッドシートにカスタムメニューを作成して更新ボタンを作成し
それを押すたびに

特定のシート(シートA)にサイト内にあるすべての添付ファイル名を取得し、スプレッドシートで管理をしたいのですが
(上書きされる)

初心者なもので、サンプルコードを探し書き換えながら勉強している程度でして…
今回やりたいようなサンプルコードが見つからなく困っています。

どなたかご教授願えますでしょうか。

まとめると
・サイト内のすべての添付ファイル名の取得
・スプレッドシートに流し込む際、上書き(もしくは必ずA1から始める)


似たような感じのサンプルコードは発見致しました。
以下は

スプレッドシートにカスタムメニューで更新ボタンを作成し
ボタンを押すことによってサイト内のすべてのページ名を取得。
スプレッドシートに流し込む(しかし、更新ボタンを押しても上書きはされない)

function onOpen(){
  var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var myMenuEntries = [];
  myMenuEntries.push({name: "アップ済みPIC一覧の更新", functionName: "getpicfilename"});
  mySpreadsheet.addMenu("追加メニュー", myMenuEntries);
}

function getpicfilename() {
  var mySite = SitesApp.getSiteByUrl('https://xxxxxxxxxxxxx.com');
  var pages = mySite.getListItems()[0];
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  for(var i=0; i<pages.length; i++){
    sheet.getRange('A'+(sheet.getLastRow()+1)).setValue(pages[i].getTitle());
  }
}



hikochang

unread,
Jun 14, 2016, 12:48:41 PM6/14/16
to Google Apps API Japan
最近スクリプトを書いて無いので回答できるか分かりませんが、、、

・サンプルコードは動かせたかどうかを記載した方が良いです。
・次にやりたい事とサンプルコードで実施していることの差分を明確にした方が良いです。
・その上で、何かトライしたことがあればその内容を書いた方が良いです。

Message has been deleted

hikochang

unread,
Jun 15, 2016, 12:00:29 PM6/15/16
to Google Apps API Japan
やりたいことが十分にわかっていませんが、、、、

function onOpen(){
  var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var myMenuEntries = [];
  myMenuEntries.push({name: "アップ済みPIC一覧の更新", functionName: "getpicfilename"});
  mySpreadsheet.addMenu("追加メニュー", myMenuEntries);
}

function getpicfilename() {
  var number = 1;
  var mySite = SitesApp.getSiteByUrl('https://sites.google.com/a/xxxx.com/test/');
  var pages = mySite.getAllDescendants();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var name = pages[0].getTitle();
  for(var i=0; i<pages.length; i++){
    var attchs = pages[i].getAttachments();
    for( var j=0; j<attchs.length; j++ ){
      sheet.getRange('A'+number).setValue(pages[i].getTitle());
      sheet.getRange('B'+number).setValue(attchs[j].getTitle());
      number++;
    }
  }
}

2016年6月15日水曜日 1時48分41秒 UTC+9 hikochang:

ony...@gmail.com

unread,
Jun 24, 2016, 4:02:43 AM6/24/16
to Google Apps API Japan
hikochangさん
投稿ありがとうございました。
質問の仕方もよくわかっていなかったので
以下のご指摘とても勉強になりました。

>・サンプルコードは動かせたかどうかを記載した方が良いです。
>・次にやりたい事とサンプルコードで実施していることの差分を明確にした方が良いです。
>・その上で、何かトライしたことがあればその内容を書いた方が良いです。
また、参考スクリプトありがとうございました。

どうやら、Rangeがよくわかってなかったようで
二重()や+の使い方がまだまだ理解できてないです…
が、
奇跡的に(ほぼ偶然だったのですが)やりたいことができるようになりました。

スプレッドシートを起動し
Aの更新ボタンを押すと
シート1のB列を一度クリアにし、
自分のサイト(https://google.com/a/xxxx.com/gazou/)の特定のページ(home/A)にアップされている添付ファイルの名前をすべて取得し流し込む。

//起動時にメニュー"アップ済みPICの更新"

function onOpen(){
 
var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 
var myMenuEntries = [];
myMenuEntries.push({name: "Aの更新", functionName: "myFunctionA"});

mySpreadsheet
.addMenu("アップ済みPICの更新", myMenuEntries);
}


function myFunctionA() {


 
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 
var objSheet = objSpreadsheet.getSheetByName("シート1");
 
SpreadsheetApp.setActiveSheet(objSheet);
   
 
var msgBx_A = Browser.msgBox("Aを更新しますか?", Browser.Buttons.YES_NO);


if (msgBx_A == "yes") {

//B列をクリアにする  
 
var pic_A = objSheet.getRange("B3:B");
  pic_A
.clear();

 
 
var mySite = SitesApp.getSiteByUrl('https://google.com/a/xxxx.com/gazou/');
 
var page_A = mySite.getChildByName("home/A");
 
var attachments_A = page_A.getAttachments();
 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 
 
for(var i=0; i<attachments_A.length; i++){
   
 
var range_A = sheet.getRange("B"+(1+i))
 
  range_A
.offset(2,0).setValue(attachments_A[i].getTitle());
 
}
 
}
 
}




Reply all
Reply to author
Forward
0 new messages