Google Sheets Hücre Değerini Artırarak Toplu Yazdırma

Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
Merhabalar.
Elimizde öğrenci bilgilerimizden oluşan bir Google Sheet sayfası var. Bu sayfadaki A1 hücresindeki 1'den başlayıp 2,3,4... diye devam eden sayıların her artışında sayfayı doğrudan yazıcıya göndermek istiyoruz. Şimdilik manuel olarak yapıyoruz.
Mesela;
Bir Google Sheets makrosu veya komutu kaydedip butona atayınca ve butona tıklayınca bize hangi aralıkları yazdırmak istediğimizi sormalı
Örneğin ilk sayı 5, son sayı 12 girdik
Komut:
A1 hücresini 5 yap > sayfayı yazdır.
A1 hücresini 6 yap > sayfayı yazdır.
A1 hücresini 7 yap > sayfayı yazdır.
.
.
.
A1 hücresini 12 yap > sayfayı yazdır.

Yardımlarınız için teşekkür ederim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Dediğiniz işlemi Google Sheet'te yapmak kolay bir işlem değil. Google sheet programlama kısmında (AppScript) yazdırma ile ilgili hiç bir direk komut yok. Dolaylı olarak HTML kodları oluşturup ordan yazdırma ile ilgili bilgiler var ama çok uzun bir işlem. Ben hiç sevemedim. Attığınız taş ürküttüğünüz kurbağaya değmeyecek şekilde...
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Merhaba;

Google scripttten az çok anladığınızı farz ediyorum.

Önce Uzantılar > Apps Komut Dosyası bölüne gelin

Şu kodu gs uzantılı yere yapıştırın.

Kod:
var PRINT_OPTIONS = {
  'size': 7,               // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
  'fzr': false,            // repeat row headers
  'portrait': true,        // false=landscape
  'fitw': true,            // fit window or actual size
  'gridlines': false,      // show gridlines
  'printtitle': false,
  'sheetnames': false,
  'pagenum': 'UNDEFINED',  // CENTER = show page numbers / UNDEFINED = do not show
  'attachment': false
}

var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);


function ikisi() {
  printit()
  printSelectedRange()
  };



function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var result = SpreadsheetApp.getUi().prompt('A1:A10 gibi yazıp tamamı tıklayın');
  var newName = result.getResponseText();
  if (!newName) return;

  spreadsheet.getRange(newName).activate();

};

function printSelectedRange() {
  SpreadsheetApp.flush();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getActiveRange();

  var gid = sheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}


Daha Sonraki aşama;

Apps Script bölümünde + işeartine basarak html dosya oluştur deyin.

Dosya adı js olsun.

js dosyasına şunu yapiştırın.

Kod:
<script>
  window.open('<?=url?>', '_blank', 'width=800, height=600');
  google.script.host.close();
</script>

Kaydedin ve komut scriptlerine gelin ve
ikisi()
komutunu çalıştırın.

Sayfa sizden izin isteyecektir. Gerekli izinleri verin.

Kod denenmiş ve çalışmaktadır.

önizleme
 
Son düzenleme:
Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
Merhaba;

Google scripttten az çok anladığınızı farz ediyorum.

Önce Uzantılar > Apps Komut Dosyası bölüne gelin

Şu kodu gs uzantılı yere yapıştırın.

Kod:
var PRINT_OPTIONS = {
  'size': 7,               // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
  'fzr': false,            // repeat row headers
  'portrait': true,        // false=landscape
  'fitw': true,            // fit window or actual size
  'gridlines': false,      // show gridlines
  'printtitle': false,
  'sheetnames': false,
  'pagenum': 'UNDEFINED',  // CENTER = show page numbers / UNDEFINED = do not show
  'attachment': false
}

var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);


function ikisi() {
  printit()
  printSelectedRange()
  };



function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var result = SpreadsheetApp.getUi().prompt('A1:A10 gibi yazıp tamamı tıklayın');
  var newName = result.getResponseText();
  if (!newName) return;

  spreadsheet.getRange(newName).activate();

};

function printSelectedRange() {
  SpreadsheetApp.flush();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getActiveRange();

  var gid = sheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}


Daha Sonraki aşama;

Apps Script bölümünde + işeartine basarak html dosya oluştur deyin.

Dosya adı js olsun.

js dosyasına şunu yapiştırın.

Kod:
<script>
  window.open('<?=url?>', '_blank', 'width=800, height=600');
  google.script.host.close();
</script>

Kaydedin ve komut scriptlerine gelin ve
ikisi()
komutunu çalıştırın.

Sayfa sizden izin isteyecektir. Gerekli izinleri verin.

Kod denenmiş ve çalışmaktadır.

önizleme
Selamlar.
Öncelikle emekleriniz için çok teşekkür ederim. Elinize sağlık. Kod gayet güzel çalıştı.
Fakat sanırım ben hatalı ifade ettim. Değeri değişmesi gereken hücremiz sadece A1. A1 hücresindeki sayılar 1,2,3.. diye sırayla artarak sayfanın tamamını yazıcıya göndermemiz gerekiyor. Sadece A1 hücresini değil.
Daha doğrusu sayfanın diğer hücrelerinde A1 hücresindeki değere bakıp DÜŞEYARA formülü diğer başka sayfadan çekilen veriler var. Klasik exceldeki değer değiştirici butonla yaptığımız gibi A1 hücresindeki değer değiştikçe öğrenci formundaki bilgiler de değişiyor ve yazdırmak istiyoruz.

Kusura bakmayın. Konuya tam hakim olamayınca güzel ifade edemiyorum. Kısaca A1 hücresindeki değer 1'den başlayarak otomatik olarak artacak ve her artışta sayfanın tamamı yazıcıya gönderilecek. Tabi istediğimiz sayıdan başlatıp, istediğimiz sayıda sonlandırmak da istiyoruz.

Arzu ederseniz Google Sheest sayfasını sizlerle paylaşabilim.
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Formüllerin arttırılan sayıya hemen yanıt verip veremeyeceğini bilemiyorum.

var yazdirmaalani = "A1:z100" alanını kendinize göre ayarlayın.

Sayfanızı yenileyin.

Sheet menüde 'YAZDIRMA MENUSU' adlı buton göreceksiniz. onu tıklayın.

Bu 1. seçenek olsun.


Kod:
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('YAZDIRMA MENUSU')
      .addItem('YAZ', 'sayiarttir')
    
      .addToUi();
}

function sayiarttir() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
 var ValueSheet =  ss.getSheetByName("Status");
 var sayi = Browser.inputBox('Sayı Girin', Browser.Buttons.OK_CANCEL);
 var SearchValue = ValueSheet.getRange("A1").setValue(sayi)

 printit()

}


function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var yazdirmaalani = "A1:z100"   // Bu alanı kendiniz belirleyin
  spreadsheet.getRange(yazdirmaalani).activate();
  SpreadsheetApp.flush();
  var range = spreadsheet.getActiveRange();
  var gid = spreadsheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}
2. seçenek

Bu kodu başka bir kod modulüne yapiştırarak deneyin.
çalıştıracağınız fonksiyon sayiyaz()

Deneyin

Kod:
function sayiyaz()

{
 var wb= SpreadsheetApp.getActiveSpreadsheet();
 var sh1=wb.getActiveSheet();
// Ben sekiz  dedim ama siz arttırabilirsiniz.
 for (var counter = 1; counter <= 8; counter = counter + 1) {
 var cell=sh1.getRange(1, 1);
    cell.setValue(counter);
 
 var response = Browser.msgBox('Devam edilsin mi ?', Browser.Buttons.YES_NO);
  if (response == "yes") {
    printit()
 
  Utilities.sleep(10000);

 
  } else {
  
 break
  }
 
}
      }
 



function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var yazdirmaalani = "A1:z100"   // Bu alanı kendiniz belirleyin
  spreadsheet.getRange(yazdirmaalani).activate();
  SpreadsheetApp.flush();
  var range = spreadsheet.getActiveRange();
  var gid = spreadsheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}
 
Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
Formüllerin arttırılan sayıya hemen yanıt verip veremeyeceğini bilemiyorum.

var yazdirmaalani = "A1:z100" alanını kendinize göre ayarlayın.

Sayfanızı yenileyin.

Sheet menüde 'YAZDIRMA MENUSU' adlı buton göreceksiniz. onu tıklayın.

Bu 1. seçenek olsun.


Kod:
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('YAZDIRMA MENUSU')
      .addItem('YAZ', 'sayiarttir')
   
      .addToUi();
}

function sayiarttir() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
var ValueSheet =  ss.getSheetByName("Status");
var sayi = Browser.inputBox('Sayı Girin', Browser.Buttons.OK_CANCEL);
var SearchValue = ValueSheet.getRange("A1").setValue(sayi)

printit()

}


function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var yazdirmaalani = "A1:z100"   // Bu alanı kendiniz belirleyin
  spreadsheet.getRange(yazdirmaalani).activate();
  SpreadsheetApp.flush();
  var range = spreadsheet.getActiveRange();
  var gid = spreadsheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}
2. seçenek

Bu kodu başka bir kod modulüne yapiştırarak deneyin.
çalıştıracağınız fonksiyon sayiyaz()

Deneyin

Kod:
function sayiyaz()

{
var wb= SpreadsheetApp.getActiveSpreadsheet();
var sh1=wb.getActiveSheet();
// Ben sekiz  dedim ama siz arttırabilirsiniz.
for (var counter = 1; counter <= 8; counter = counter + 1) {
var cell=sh1.getRange(1, 1);
    cell.setValue(counter);

var response = Browser.msgBox('Devam edilsin mi ?', Browser.Buttons.YES_NO);
  if (response == "yes") {
    printit()

  Utilities.sleep(10000);


  } else {
 
break
  }

}
      }




function printit() {
  var spreadsheet = SpreadsheetApp.getActive();
  var yazdirmaalani = "A1:z100"   // Bu alanı kendiniz belirleyin
  spreadsheet.getRange(yazdirmaalani).activate();
  SpreadsheetApp.flush();
  var range = spreadsheet.getActiveRange();
  var gid = spreadsheet.getSheetId();
  var printRange = objectToQueryString({
    'c1': range.getColumn() - 1,
    'r1': range.getRow() - 1,
    'c2': range.getColumn() + range.getWidth() - 1,
    'r2': range.getRow() + range.getHeight() - 1
  });
  var url = spreadsheet.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;

  var htmlTemplate = HtmlService.createTemplateFromFile('js');
  htmlTemplate.url = url;
  SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
}

function objectToQueryString(obj) {
  return Object.keys(obj).map(function(key) {
    return Utilities.formatString('&%s=%s', key, obj[key]);
  }).join('');
}
Tekrar elinize sağlık.
1. Yöntemde YAZDIRMA Menüsündeki YAZ'a tıklayınca SAYI GİRİN seçeneği çıktı. Sayıyı girdikten sonra (sadece bir sayı da denedim, 3-7 gibi aralık da denedim) herhangi bir yazdırılabilir alan seçmedi, A1 hücresine herhangi bir sayı yazmadı, bu hata geldi.

2. Yöntemde Kodu Çalıştırıp DEVAM EDİLSİN Mİ seçeneğinden sonra benim belirlediğim A1:Z34 yazdırma alanını seçti, A1 hücresine 1 yazdı, bu hatayı verdi.

Zamanınızı çok aldım.Hakkınızı helal edin.
 
Katılım
24 Temmuz 2019
Mesajlar
181
Excel Vers. ve Dili
2010 ve 2016 Türkçe
Altın Üyelik Bitiş Tarihi
19-10-2023
Merhaba,

Yazdırılacak sayfanın nasıl bir görüntüde olacağını da bilmemiz gerek. Yazdırılacak sayfanın görüntüsünü veya e-tablonun bir kopyasını paylaşır mısınız?
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
1. resim için sadece 1 sayı yazacaksınız. Aralık değil. Mesela 9 gibi.
2. resim için kodda bu da olmalı. Kodun üst bölümüne yapiştırın.
Kod:
var PRINT_OPTIONS = {
  'size': 7,               // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
  'fzr': false,            // repeat row headers
  'portrait': true,        // false=landscape
  'fitw': true,            // fit window or actual size
  'gridlines': false,      // show gridlines
  'printtitle': false,
  'sheetnames': false,
  'pagenum': 'UNDEFINED',  // CENTER = show page numbers / UNDEFINED = do not show
  'attachment': false
}

var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);

O zaman basit yoldan gidelim.

Varsayalım ki sizin sayfanın adı "Sayfa1" olsun. Scriptle bu sayfayı çoğaltalım ve a1 hücresine istediğimiz sayıyı (sayfa adı olarak) script ile yazdıralım.
Yazdırma için gereken sayılarda faraza p1:p10 aralığındaki 1,25,7, vs sayı olsun. Yani oluşacak sayfa isimleri p kolunundaki değerlerden oluşacak.
Ben P sütunu dedim ama siz kendinize göre ayarlayabilirsiniz.

Script ilk çalışırken ana sayfada olduğunuza dikkat edin. Sayfaları topluca yazdırmak için ayrıca bilgi isterseniz onuda anlatırım.

Kod:
function sayfakopyasiyap() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var isimalani= ss.getRange("P1:P10") // P STUNU BOŞSA P1 DEN İTİBAREN VARSAYALIM AŞAĞI DOĞRU1,2,3..10 YAZIN

  var isimlistesi = isimalani.getValues();

  var template = ss.getSheetByName('Sayfa1');

  for (var i=0; i < isimlistesi.length; i++) {

     // Put the sheet you want to create in a variable
     var sheet = ss.getSheetByName(isimlistesi[i]);
   
      // Check if the sheet you want to create already exists. If so,
      // log this and loop back. If not, create the new sheet.
        if (sheet) {
           Logger.log("Sheet " + isimlistesi[i] + " isimli bu sayfa önceden zaten vardı.");
        } else {
           template.getRange("A1").setValue(isimlistesi[i][0] )
           template.copyTo(ss).setName(isimlistesi[i][0] );
            ss.getSheetByName(isimlistesi[i][0] ).getRange('P:P').clear({contentsOnly: true, commentsOnly: true, skipFilteredRows: true});
           }
        }
       
  return;
}



function sayfalarisil() {

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheets = ss.getSheets();

for (i = 0; i < sheets.length; i++) {

switch(sheets[i].getSheetName()) {

case "Status":  // SİLİNMESİNİ İSTEMEDİĞİMİZ SAYFA ADI

case "Sayfa1":  // SİLİNMESİNİ İSTEMEDİĞİMİZ SAYFA ADI

break;

default:

ss.deleteSheet(sheets[i]);}}}
 
Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
1. resim için sadece 1 sayı yazacaksınız. Aralık değil. Mesela 9 gibi.
2. resim için kodda bu da olmalı. Kodun üst bölümüne yapiştırın.
Kod:
var PRINT_OPTIONS = {
  'size': 7,               // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
  'fzr': false,            // repeat row headers
  'portrait': true,        // false=landscape
  'fitw': true,            // fit window or actual size
  'gridlines': false,      // show gridlines
  'printtitle': false,
  'sheetnames': false,
  'pagenum': 'UNDEFINED',  // CENTER = show page numbers / UNDEFINED = do not show
  'attachment': false
}

var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);

O zaman basit yoldan gidelim.

Varsayalım ki sizin sayfanın adı "Sayfa1" olsun. Scriptle bu sayfayı çoğaltalım ve a1 hücresine istediğimiz sayıyı (sayfa adı olarak) script ile yazdıralım.
Yazdırma için gereken sayılarda faraza p1:p10 aralığındaki 1,25,7, vs sayı olsun. Yani oluşacak sayfa isimleri p kolunundaki değerlerden oluşacak.
Ben P sütunu dedim ama siz kendinize göre ayarlayabilirsiniz.

Script ilk çalışırken ana sayfada olduğunuza dikkat edin. Sayfaları topluca yazdırmak için ayrıca bilgi isterseniz onuda anlatırım.

Kod:
function sayfakopyasiyap() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var isimalani= ss.getRange("P1:P10") // P STUNU BOŞSA P1 DEN İTİBAREN VARSAYALIM AŞAĞI DOĞRU1,2,3..10 YAZIN

  var isimlistesi = isimalani.getValues();

  var template = ss.getSheetByName('Sayfa1');

  for (var i=0; i < isimlistesi.length; i++) {

     // Put the sheet you want to create in a variable
     var sheet = ss.getSheetByName(isimlistesi[i]);
  
      // Check if the sheet you want to create already exists. If so,
      // log this and loop back. If not, create the new sheet.
        if (sheet) {
           Logger.log("Sheet " + isimlistesi[i] + " isimli bu sayfa önceden zaten vardı.");
        } else {
           template.getRange("A1").setValue(isimlistesi[i][0] )
           template.copyTo(ss).setName(isimlistesi[i][0] );
            ss.getSheetByName(isimlistesi[i][0] ).getRange('P:P').clear({contentsOnly: true, commentsOnly: true, skipFilteredRows: true});
           }
        }
      
  return;
}



function sayfalarisil() {

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheets = ss.getSheets();

for (i = 0; i < sheets.length; i++) {

switch(sheets[i].getSheetName()) {

case "Status":  // SİLİNMESİNİ İSTEMEDİĞİMİZ SAYFA ADI

case "Sayfa1":  // SİLİNMESİNİ İSTEMEDİĞİMİZ SAYFA ADI

break;

default:

ss.deleteSheet(sheets[i]);}}}
Selamlar tekrar.
"2. resim için kodda bu da olmalı. Kodun üst bölümüne yapiştırın" yöntemi ile çok güzel çalıştı. Teşekkür ederim. Elinize sağlık.

1. Acaba girdiğimiz sayı aralığını DEVAM ETMEK İSTİYOR MUSUNUZ? sorusu olmadan doğrudan yazıcıya göndermemiz mümkün mü? Ayrı bir PDF değil de? Kod çalışınca doğrudan yazıcıya

2. Bir de normal yazdırınca DAR kenar boşlukları seçebiliyoruz. Kenar boşlukları Görseldeki gibi DAR oluyor. Kod çalıştırıp yazdırınca ise GENİŞ oluyor. Kod ile de DAR kenar yazdırma yapabilir miyiz?
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Google Apps Komut Dosyası uygulaması, sizin bilgisayarınızda değil Google sunucularında çalıştığı için uygulamanızın içinden hiçbir şey yazdırmanız mümkün olmayacaktır.
Sorusuz hali için deneyin.
Kod:
function sayiyaz2()

{
 var wb= SpreadsheetApp.getActiveSpreadsheet();
 var sh1=wb.getActiveSheet();
 for (var counter = 1; counter <= 8; counter = counter + 1) {
 var cell=sh1.getRange(1, 1);
    cell.setValue(counter);
 

    printit()
 
  Utilities.sleep(10000);

 

}
      }
sayfakopyasiyap() denediniz mi ?
 
Son düzenleme:
Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
Google Apps Komut Dosyası uygulaması, sizin bilgisayarınızda değil Google sunucularında çalıştığı için uygulamanızın içinden hiçbir şey yazdırmanız mümkün olmayacaktır.
Sorusuz hali için deneyin.
Kod:
function sayiyaz2()

{
var wb= SpreadsheetApp.getActiveSpreadsheet();
var sh1=wb.getActiveSheet();
for (var counter = 1; counter <= 8; counter = counter + 1) {
var cell=sh1.getRange(1, 1);
    cell.setValue(counter);


    printit()

  Utilities.sleep(10000);



}
      }
sayfakopyasiyap() denediniz mi ?
Çok çok teşekkür ederim. fazlasıyla işimi gördü. Elinize emeğinize sağlık.
Peki hocam. Google Sheets'den Export veya kopyala yapıştır yöntemi dışında PC'deki excele veri çekmek mümkün mü? Yani Google Sheets sayfasının urls2sini gireceğiz. O sayfadaki öğrenci adı-soyad-cinsiyeti gibi bilgileri pc'deki excele aktaracak.
Google Sheets'e yüklenen excel dosyalarının hepsi aynı biçimde değil ama. Örnekteki gibi farklı şekillerde olabiliyor.

 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

Örnek dosyalarınızın bir standartı yok. Ya bunları standart hale getirin, ya da araya koyacağınız bir servisle ilgili dosyalardaki verileri standart bir çıktıya dönüştürün. Yani sütun başlıkları olmayanlara eklemek ad-soyad aynı hücrede olanları ayırmak vs. Daha sonra bu servis url si ile dönen verileri de localdeki Excel dosyanızdan kodlarla alabilirsiniz.

Veya localdeki Excel dosyanızdan ilgili sheet dosyanızı csv ya da excel olarak ve url si ile örneğin https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/export?format=csv gibi csv olarak (csv yerine xlsx olabilir) indirip inen dosyadan excel dosyanız üzerinden kodlarla ilgili düzenlemeleri yaptırarak verileri alabilirsiniz. Benim aklıma gelenler bunlar ;)
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Dosyalarınıza masaüstünden direkt ulaşmak istiyorsanız https://www.google.com/intl/tr_tr/drive/download/ adresindeki dosyayı kurun. Direkt masa üstünden çalışabilirsiniz. Excele aktarmaya gerek olmayacak.

Ayrıca bu kodu kod bölümüne yapıştırın.

Kod:
function excelolarakindir() {
  var ssID = SpreadsheetApp.getActive().getId();
  var URL = 'https://docs.google.com/spreadsheets/d/'+ssID+'/export?format=xlsx';

  // Display a modal dialog box with download link.
  var htmlOutput = HtmlService
                  .createHtmlOutput('<a href="'+URL+'">ExcelOlarakIndir</a>')
                  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
                  .setWidth(120)
                  .setHeight(80);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Dosya XLSX');
}
Sonra onOpen kodunu şu şekilde değiştirin. Ve sayfayı yenileyin.

Kod:
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('YAZDIRMA MENUSU')
      .addItem('YAZ', 'sayiarttir')
       .addItem('XLSX olarak indir', 'excelolarakindir')
      .addToUi();
}
 
Katılım
29 Nisan 2009
Mesajlar
82
Excel Vers. ve Dili
2007 türkçe
cevaplarınız ve yardımlarınız için çok teşekkür ederim.
 
Üst